[英]Using eloquent select related entries after restricting parent entry in Laravel
如果我有一个laravel类,请说“类别”,它与另一个类具有1:1的关系,请说“子类别”,我如何查询所有子类别,但对Category类有限制?
例如,查询所有类别类别的标题为“ TEST”的子类别。
class Category extends Model
{
public function subcategories()
{
return $this->hasMany('App\Subcategory');
}
}
class Subcategory extends Model {
public function category(){
return $this->belongsTo('App\Category');
}
}
我尝试通过以下方式渴望加载 :
$subcategories = Subcategory::with(['category' => function($query)
{
$query->where('title', '=', 'TEST');
}])->get();
// Returns ALL subcategories, with null where the category doesn't = TEST
我对执行此操作的所有方法感兴趣!
编辑-两种解决方案:
$data = Category::whereTitle('TEST')->first()->subcategories
//or equivalently:
$data = Category::whereTitle('TEST')->get()[0]->subcategories;
或在子类别中使用@Alpha解决方案创建动态范围
public function scopeFromCategory($query, $type)
{
return $query->whereHas('Category', function ($q) use ($type)
{
$q->whereTitle($type);
});
}
// So you can later call
$data = Subcategory::FromCategory('TEST')->get();
您可以尝试如下操作:
$subcategories = Subcategory::whereHas('category', function($query)
{
$query->where('title', 'TEST');
})
->with('Category')
->get();
此代码将返回包括相关Category
的SubCategories
但SubCategories
是相关的category.title
为TEST
。 另请参阅有关querying-relations的文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.