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?