Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel雄辩关系查询_Php_Sql_Laravel_Laravel 4_Laravel 5 - Fatal编程技术网

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是一个外键,与链接相关您的答案工作正常@下次谢谢你再查一遍我不太确定。让我知道它是否工作得很好。我只是稍微修改一下你的代码,它就工作得很好。谢谢