2017-10-10 50 views
0

此查詢的目標是查找所有具有與其關聯的名稱爲「email_small」的圖像類型的故事。並非所有的故事都有圖像。使用3個表的Laravel雄辯子查詢

有三個表/參與車型:Storys,StoryImage和ImageTypes

有一個故事可以有很多故事的圖像

/* Story model */ 
public function storyImages() 
{ 
    return $this->hasMany(StoryImage::class); 
} 

雖然故事的圖像有一個圖像類型

/* Storyimage model */ 
public function imgtype() 
{ 
    return $this->belongsTo('App\Imagetype','imagetype_id'); 
} 

我可以通過圖像選擇所有故事,但我在子查詢中丟失了第二步

$stories = Story::whereHas('storyImages', function($query){ 
       $query->where($query->imgtype()->name, '=', 'email_small'); 
      }) 
      ->->get(); 

回答

1

爲什麼你不能使用兩個查詢?首先選擇名稱爲「email_small」 imgType的ID,然後檢查ID:

$id = Imagetype::where('name', 'email_small')->first()->id; 
$stories = Story::whereHas('storyImages', function($q) use ($id) { 
    $q->where('imagetype_id', $id); 
})->get(); 

我敢肯定,即使你在一個函數Laravel寫的一切仍然會叫幾個疑問。

+0

啊對,這可能更簡單。我正在推翻那個。 – Ravioli87