我有两个表-接触和访问:
Contacts表
id | name
----- | -------
1 | Joe
2 | Sally
访问表
id | contact_id | pathname | referrer
----- | ------- | ------- | -------
1 | 1 | about | google
2 | 1 | pricing | null
3 | 1 | signup | null
4 | 2 | about | null
5 | 2 | signup | null
使用雄辩,我想检索所有联系人都有一个路径名= '注册'和一个发送者= '谷歌'。
目前我得到的是:
Contact::whereHas('visits', function($query) {
$query->where('pathname','=','signup');
})
->orWhereHas('visits', function($query) {
$query->where('referrer','=','google');
})
->get();
它正确检索访问过定价或注册页面的所有联系人。
然而,这个例子也将检索Sally(从上面的例子表中),因为她访问了signup,但没有被google引用。我需要一种方法来只检索乔,谁是由谷歌和访问价格都提到。
有什么想法吗?提前感谢!
3条答案
按热度按时间xqkwcwgp1#
您可以用途:
ulmd4ohb2#
上面代码的改进版本:
几点值得注意:
1.您可以在闭包中链接
where()
子句。=
,因此可以省略它。1.当访问多个相关模型时,使用多个
whereHas()
子句。ivqmmu1c3#
你在哪里加入了我们,你在哪里。10个月10个月10他说:
или