2016-09-23 2 views
1
  • hasOne Менеджер Продавец
  • Vendor hasMany Меню

И мой маршрут, как это:Лучший способ для Sql с отношением laravel?

Route::get('vendor/{vid}/menu/{id}', '[email protected]'); 

Я уже написал запрос, как это:

$vendor = manager::where('status','>',0) 
    ->with(['vendor' => function($query) use ($vid) { 
     $query->where('id',$vid); 
    }])->first()->vendor()->first(); 

    $menu= $vendor->menu()->where('id',$id)->first(); 

    return $menu; 

Я надеваю `t Знать оригинальную Sql этим написанным, но это кажется запросом manay time, - это любой способ для лучшей эффективности?

+0

вы можете создать для этого функцию-обертку и называть только – madalinivascu

+0

, почему вам нужен менеджер, если у вас есть идентификатор поставщика? – madalinivascu

ответ

1

Вы могли бы упростить код, так как это эквивалентно:

$menu = vendor::whereHas('manager', function($q) { 
    $q->where('status', '>', 0); 
})->findOrFail($vid)->menu()->find($id); 

Вызов findOrFail() возвращает ошибку, если данный поставщик не может быть найден. whereHas будет убедиться, что связанный менеджер имеет правильный статус и find() вернет одну модель по умолчанию.

Смежные вопросы