2017-10-10 11 views
0

このクエリの目的は、「email_small」という名前のImage Typeを持つすべてのStoriesを検索することです。すべての物語にイメージがあるわけではありません3つのテーブルを使用するLaravel Eloquentサブクエリ

は、3つのテーブル/関与のモデルがあります:物語は、多くの物語画像

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

ストーリー画像を一つの画像の種類がありますが

を持つことができストーリーズ、StoryImage、およびImageTypes

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

画像ですべての記事を選択する2番目のステップに進むことができますが、サブクエリ内で失われています

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

答えて

1

2つのクエリを使用できないのはなぜですか?まず名前「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(); 

私はあなたが1つの関数にすべてのものを書く場合でも、Laravelはまだいくつかのクエリを呼ぶことを確信しています。

+0

ああ、それはおそらくもっと簡単です。私はそのことを考えすぎた。 – Ravioli87

関連する問題