Estoy tratando de adjuntar "modelo de elementos" al "modelo de eventos".
Modelo del artículo:
public function events()
{
return $this->belongsToMany('App\Event', 'event_item');
}
Modelo de evento
public function items()
{
return $this->belongsToMany('App\Item', 'event_item');
}
Modelo de usuario
public function items()
{
return $this->hasMany('App\Item', 'user_id');
}
EventsController
public function store(Request $request)
{
// Get user
$user = $request->user();
// Create event
$event = Event::create(array_merge($request->all(), ['user_id' => $user->id]));
// Attach items to event
$user->items()->attach($event->id);
}
Mi usuario tiene múltiples elementos. Todos los elementos de usuario deben adjuntarse a eventos en la función de tienda. Me sale este error Método Illuminate \ Database \ Query \ Builder :: attach no existe.
3 respuestas
Pude resolver esto, un error fácil en realidad. Quiero adjuntar elementos a eventos pero en mi pregunta original tengo usuarios adjuntando elementos.
Cambió esto:
// Attach items to event
$user->items()->attach($event->id);
A esto:
// Attach items to event
$event->items()->attach($user->items);
Funciona como se espera ahora.
La función de elementos User model
tiene que devolver una relación BelongsToMany para poder usar attach ().
Modelo de usuario:
public function items() {
return $this->belongsToMany('App\Item');
}
Modelo de usuario:
return $this->hasMany('App\Item', 'item_id');
Preguntas relacionadas
Nuevas preguntas
laravel
Laravel es un marco web PHP gratuito y de código abierto, creado por Taylor Otwell y destinado al desarrollo de aplicaciones web siguiendo el patrón arquitectónico modelo-vista-controlador (MVC) y basado en Symfony. El código fuente de Laravel está alojado en GitHub y tiene licencia bajo los términos de la Licencia MIT.