首页 > 解决方案 > Laravel eloquent hasmany of hasmany

问题描述

如何显示所有有照片附件的公司?

公司:

id | name 

用户:

id | name | company_id

邮政:

id | user_id | text

post_attachment:

id | post_id | path | type

公司型号:

public function users() {
  return $this->hasMany('App\User')->orderBy('id', 'ASC');
}

用户模型:

public function posts() {
  return $this->hasMany('App\Post');
}

帖子型号:

public function images(){
  return $this->hasMany('App\PostsAttachment')->where("type", "image");
}

我想让所有拥有用户的公司都拥有最少 2 张图片附件的帖子。任何人都可以帮助我吗?

我试过 Company::has('users.posts.images', '<', 2)->get();了,但它也给了用户图像低于 2 的公司。

标签: phplaraveleloquent

解决方案


使用 eloquent 你可以将你的逻辑写成

$companies = Company::has('users.posts.images')->get();

见查询关系存在


推荐阅读