mail example enviar bootstrap php laravel orm laravel-4 eloquent

php - enviar - mail::send laravel example



Laravel pertenece a no trabajar (5)

Tengo 2 modelos en mi aplicación, ''User'' y ''MedicineType'' (cada usuario pertenece a un MedicineType).

Hice la relación de uno a muchos entre dos modelos mediante belongsTo () y hasMany (). La relación hasMany () funciona perfectamente, pero belongTo () no funciona. ¿Alguien sabe dónde me equivoqué?

User :: find (1) -> medicine_type [esto no devuelve nada]

MedicineType :: find (1) -> usuarios [esto devuelve usuarios]

Aquí está el código para los modelos:

class MedicineType extends Eloquent { public function users() { return $this->hasMany(''User''); } } class User extends Eloquent { public function medicine_type() { return $this->belongsTo(''MedicineType''); } }

Y aquí está mi estructura de base de datos:

users: id name medicine_type_id medicine_types: id name


¡Cometí el error estúpido de no agregar el "retorno" en el método de relación!

Asegúrate de devolver la relación ... Obviamente esto no funcionará:

public function medicineType() { $this->belongsTo(''MedicineType'', ''id''); }


Cambié "medicine_type" a "medicineType" y todo salió bien ...


En mi caso, los datos de los modelos relacionados se eliminaron y la actualización no obtiene los datos eliminados en la consulta general. Para obtener los datos eliminados de manera suave, debe usar "withTrashed () o onlyTrashed ()".

Puedes consultar la documentación aquí.

https://laravel.com/docs/5.6/scout#soft-deleting


La razón por la que su relación no funciona no es por las relaciones especificadas en el modelo, sino por el nombre del método en el modelo de Usuario y no por la especificación de la clave externa.

En lugar de:

public function medicine_type() { return $this->belongsTo(''MedicineType''); }

Utilizar:

public function medicineType() { return $this->belongsTo(''MedicineType'', ''id''); }

Espero que esto funcione para ti ;)

Todo junto:

<?php // app/models/MedicineType.php class MedicineType extends Eloquent { // Determines which database table to use protected $table = ''medicine_types''; public function users() { return $this->hasMany(''User''); } }

y:

<?php // app/models/User.php class User extends Eloquent { // Determines which database table to use protected $table = ''users''; public function medicineType() { return $this->belongsTo(''MedicineType'', ''id''); } }

Probando si funciona:

$user = User::find(1); return $user->medicineType->name;

Esto devuelve con éxito el nombre del tipo de medicina relacionado.

Espero que esto te ayude aún más;)


Tal vez haya un problema con Eloquent para encontrar la clave externa. Prueba esto:

class User extends Eloquent { public function medicine_type() { return $this->belongsTo(''MedicineType'', ''medicine_type_id''); } }

EDITAR:

Además, Eloquent intenta encontrar la tabla "medicinetypes" y no "medecine_types", por lo que debe especificar eso también utilizando la variable $table .

class MedicineType extends Eloquent { protected $table = ''medicine_types''; public function users() { return $this->hasMany(''User''); } }