我有三个模型:ProductType、ProductSubtype 和 ProductSubtypeCategory产品类型.phpclass ProductType extends Model{ // A product type has many subtypes public function product_subtypes(){ return $this->hasMany(ProductSubtype::class); }}产品子类型.phpclass ProductSubtype extends Model{ // Each product subtype belongs to a type public function product_type(){ return $this->belongsTo(ProductType::class); } // A product subtype has many categories public function product_subtype_categories(){ return $this->hasMany(ProductSubtypeCategory::class); }}产品子类型类别.phpclass ProductSubtypeCategory extends Model{ // Each cateogory belongs to a subtype public function product_subtype(){ return $this->belongsTo(ProductSubtype::class); }}我只想要其中存在产品子类型和子类型类别的产品类型。到目前为止我已经尝试过这个return ProductType::has('product_subtypes', function ($query){ $query->has('product_subtype_categories'); })->get();有没有任何官方方法可以从这种嵌套关系中获得我想要的结果?
1 回答
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
您所做的事情是正确的,但可以简化。
更改以下内容:
return ProductType::has('product_subtypes', function ($query){ $query->has('product_subtype_categories'); })->get();
到:
return ProductType::has('product_subtypes.product_subtype_categories')->get();
来自文档:
访问模型的记录时,您可能希望根据关系的存在来限制结果。例如,假设您想要检索至少包含一条评论的所有博客文章。为此,您可以将关系的名称传递给
has
和orHas
方法:
// Retrieve all posts that have at least one comment... $posts = App\Post::has('comments')->get();
嵌套
has
语句也可以使用“点”表示法构建。例如,您可以检索至少有一条评论和投票的所有帖子:
// Retrieve posts that have at least one comment with votes... $posts = App\Post::has('comments.votes')->get();
- 1 回答
- 0 关注
- 87 浏览
添加回答
举报
0/150
提交
取消