此查询的目标是查找所有具有与其关联的名称为“email_small”的图像类型的Stories。并非所有故事都有图像。
涉及三个表/模型: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();
答案 0 :(得分:1)
为什么不能使用两个查询?首先选择名称为#34的imgType的ID; email_small"然后检查该ID:
$id = Imagetype::where('name', 'email_small')->first()->id;
$stories = Story::whereHas('storyImages', function($q) use ($id) {
$q->where('imagetype_id', $id);
})->get();
我确信即使你在一个函数中编写所有内容,Laravel仍然会调用一些查询。