withpivot with wherepivot updateexistingpivot hasone examples example attach php laravel eloquent where relationship

php - with - wherepivot laravel



Laravel donde en objeto de relaciĆ³n (1)

La sintaxis correcta para hacer esto en tus relaciones es:

Event::whereHas(''partecipants'', function ($query) { $query->where(''IDUser'', ''='', 1); })->get();

Lea más en https://laravel.com/docs/5.0/eloquent#eager-loading

PS Es "participante", no "partecipante".

Estoy desarrollando una API web con Laravel 5.0 pero tengo una duda sobre una consulta. Mis clases son estas:

class Event extends Model { // protected $table = ''events''; public $timestamps = false; public function partecipants() { return $this->hasMany(''App/Partecipant'', ''IDEvent'', ''ID''); } public function owner() { return $this->hasOne(''App/User'', ''ID'', ''IDOwner''); } }

y

class Partecipant extends Model { // protected $table = ''partecipants''; public $timestamps = false; public function user() { return $this->belongTo(''App/User'', ''IDUser'', ''ID''); } public function event() { return $this->belongTo(''App/Event'', ''IDEvent'', ''ID''); } }

Ahora, quiero obtener todos los eventos con un participante específico. Lo intenté con:

Event::with(''partecipants'')->where(''IDUser'', 1)->get();

pero la condición donde se aplica en la clase de Evento y no en Partecipants. Esto en cambio me da una excepción:

Partecipant::where(''IDUser'', 1)->event()->get();

Sé que puedo escribir esto:

$list = Partecipant::where(''IDUser'', 1)->get(); for($item in $list) { $event = $item->event; ...other code.... }

¿Pero no se ejecutan demasiadas consultas al servidor?

Entonces, ¿dónde está la mejor manera de realizar esta consulta con Laravel y Eloquent?