plantillas index gratis for example descargar ciclo bootstrap php laravel relational-database eloquent relationship

php - index - No puedo hacer que el asociado de Laravel trabaje.



laravel notifications example (2)

Como lo entiendo, ->associate() Associate ->associate() puede ser llamado onyl en una relación BelongsTo. Entonces, en su ejemplo, podría hacer $customer->user()->associate($user) . Sin embargo, para ''asociar'' una relación Has * se usa ->save() , por lo que su código debe ser $user->customer()->save($customer)

No estoy seguro si entiendo el método associate en Laravel. Entiendo la idea, pero parece que no puedo hacer que funcione.

Con este código (destilado):

class User { public function customer() { return $this->hasOne(''Customer''); } } class Customer { public function user() { return $this->belongsTo(''User''); } } $user = new User($data); $customer = new Customer($customerData); $user->customer()->associate($customer);

Obtengo una Call to undefined method Illuminate/Database/Query/Builder::associate() cuando intento ejecutar esto.

Por lo que puedo leer, lo hago exactamente como se indica en los documentos.

¿Qué estoy haciendo mal?


Debo admitir que cuando comencé a usar Laravel las relaciones en las que la parte para la que tenía que referirme constantemente a la documentación era cierto, incluso en algunos casos no lo entendí bien.

Para ayudarlo a usted, belongsTo() se usa para actualizar una relación belongsTo() . Al hasOne su código, la clase devuelta de $user->customer() es una clase de relación hasOne y no tendrá el método asociado.

Si tuvieras que hacerlo al revés.

$user = new User($data); $customer = new Customer($customerData); $customer->user()->associate($user); $customer->save();

Funcionaría ya que $customer->user() belongsTo $customer->user() es una relación belongsTo .

Para hacer esto al revés, primero debe guardar el modelo de usuario y luego guardar el modelo del cliente como:

$user = new User($data); $user->save(); $customer = new Customer($customerData); $user->customer()->save($customer);

Edición: Puede que no sea necesario guardar el modelo de usuario primero, pero siempre lo he hecho, no estoy seguro de por qué.