Php Laravel雄辩关系查询
我的数据库模式是Php Laravel雄辩关系查询,php,sql,laravel,laravel-4,laravel-5,Php,Sql,Laravel,Laravel 4,Laravel 5,我的数据库模式是 links: id status user_id url 1 1 1 something 2 1 1 something 3 1 1 something links_type: id link_id links_type
links:
id status user_id url
1 1 1 something
2 1 1 something
3 1 1 something
links_type:
id link_id links_type
1 1 external
2 1 external
3 1 internal
4 1 external
5 2 internal
6 2 external
7 2 internal
8 2 external
我想获取所有链接的数据,状态为1,用户id为1
并计算外部和内部链接以及哪个外部计数大于2
通过使用laravel 5.2雄辩
根据给出的数据,结果应该是这样的
id status user_id url external_links internal_links
1 1 1 something 3 1
如果您已经使用fk和型号进行了正确的迁移,则以下代码应该可以正常工作:
$links=Link::where('status','=','1')->where('user_id','=','1'))
->whereHas('links_type',函数($query){
$query->whereNotIn('external_count',[0,1]);
})->get()代码>
可能应添加('links_type')以进行急切加载(N+1问题):
$links=Link::with('links_type')->where('status','=','1')->where('user_id','=','1'))
->whereHas('links_type',函数($query){
$query->whereNotIn('external_count',[0,1]);
})->get()代码>只需在链接中定义此关系
模型
public function link_type()
{
return $this->hasMany('App\linkType');
}
并使用此查询
Link::where('status','=','1')->where('user_id','=','1')->has('link_type','>', '2')->with('link_type')->get();
也许这样行得通
在必须创建之前,请为链接创建多个关系,并将其命名为类型
$links=Link::where('status',1)
->其中('user_id',1)
->whereHas('type',函数($query){
$query->where(
$query->where('links_type','external')->count(),'>',2
);
})
->get();
如何关联链接
和链接类型
?我是否有任何fk与链接
相关到链接类型
?是的,链接id是一个外键,与链接相关您的答案工作正常@下次谢谢你再查一遍我不太确定。让我知道它是否工作得很好。我只是稍微修改一下你的代码,它就工作得很好。谢谢