2017-04-18 76 views
3

空,我需要得到這些誰沒有用了許多表 我這樣的查詢如何檢查的hasMany關係記錄是雄辯laravel

$result = Recipes::select('id')->where("name", 'like', '%' . $item . '%') 
        ->with(['categoryItem']) 
        ->get(); 

而且我的輸出是

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [category_item] => Array 
       (
        [0] => Array 
         (
          [id] => 2 
          [foodable_id] => 1 
          [foodable_type] => Recipes 
          [created_at] => 2017-04-14 16:18:22 
         ) 

       ) 

     ) 

    [1] => Array 
     (
      [id] => 4 
      [category_item] => Array 
       (
       ) 

     ) 

) 
加入紀錄

我想獲得那些空的category_item細節的記錄。在波紋管例如我想指數1的記錄,所以我怎麼給的條件與查詢

回答

4

如果我理解正確的你,你想沒有categoryItem,要使用doesntHave()方法,recipies:

Recipes::where('name', 'like', '%'.$item.'%') 
     ->doesntHave('categoryItem') 
     ->get(); 

我認爲categoryItem是定義的關係,因爲您試圖在with()方法中使用它。

0

你好也許這可以幫助。 不要忘記在你的文件的頂部添加:

use DB; 

而你的結果會是這樣的

$result = Recipes::select('id')->where("name", 'like', '%' . $item . '%') ->whereHas('categoryItem', function($q) { $q->where(DB::raw('count(*)),'>', 0); })->get();

餘did't測試count函數希望這個作品,祝你好運它