Laravel - 在 whereHas 中搜索包含 null 的关系
Laravel - Search relation including null in whereHas
我正在寻找一种方法来搜索关系。
所以,我有一对一的关系(User 和 UserDetails,其中某些用户可能没有详细信息)。
所以,问题是...我怎样才能按详细信息搜索用户,而且没有详细信息的用户也必须包含在结果中。
示例:
Table 用户:
user_id、姓名、电子邮件
- 1 John Doe johndoe@address.com
- 2 理查德蒂姆 richardtim@address.com
- 3 迈克尔·伯德 michaelbird@address.com
Tableuser_details:
ID,user_id,状态
- 1, 1, 加利福尼亚州
- 2, 2, 纽约
现在...我想获取所有来自加利福尼亚州的用户,以及所有没有州的用户(在上述情况下,结果应该是 John Doe 和 Michael Bird
这是用户模型中的关系:
public function details()
{
return $this->belongsTo('App\UserDetails', 'user_id', 'user_id');
}
搜索功能为:
$users = $users->whereHas('details', function($query) use $state {
$query->where('state', $state);
});
请记住,我必须使用 eloquent/查询生成器的实例来执行此操作,我无法使用联接或原始查询。
在这种情况下,我想获取来自加利福尼亚的所有用户和所有非相关用户,但查询 returns/search 仅与 users/user_details...
相关
那么,有人可以帮助我吗?
谢谢
更新:
我正在这样尝试:
$users = new User();
$users = $users->doesntHave('user_details')->orWhereHas('user_details', function($query) use($state) {
$query->whereIn('state', $state);
});
$users->where('created_at', '>=', $start_date);
$users->where('created_at', '<=', $end_date);
您可以使用 doesntHave
in conjunction with orWhereHas
创建所需的查询:
User::doesntHave('details')->orWhereHas('details', function($query) {
$query->where('state', '=', $state);
})->where('users.created_at', '>=', $start_date)
->where('users.created_at', '<=', $end_date)
->get();
我正在寻找一种方法来搜索关系。
所以,我有一对一的关系(User 和 UserDetails,其中某些用户可能没有详细信息)。
所以,问题是...我怎样才能按详细信息搜索用户,而且没有详细信息的用户也必须包含在结果中。
示例: Table 用户: user_id、姓名、电子邮件 - 1 John Doe johndoe@address.com - 2 理查德蒂姆 richardtim@address.com - 3 迈克尔·伯德 michaelbird@address.com
Tableuser_details: ID,user_id,状态 - 1, 1, 加利福尼亚州 - 2, 2, 纽约
现在...我想获取所有来自加利福尼亚州的用户,以及所有没有州的用户(在上述情况下,结果应该是 John Doe 和 Michael Bird
这是用户模型中的关系:
public function details()
{
return $this->belongsTo('App\UserDetails', 'user_id', 'user_id');
}
搜索功能为:
$users = $users->whereHas('details', function($query) use $state {
$query->where('state', $state);
});
请记住,我必须使用 eloquent/查询生成器的实例来执行此操作,我无法使用联接或原始查询。
在这种情况下,我想获取来自加利福尼亚的所有用户和所有非相关用户,但查询 returns/search 仅与 users/user_details...
相关那么,有人可以帮助我吗? 谢谢
更新:
我正在这样尝试:
$users = new User();
$users = $users->doesntHave('user_details')->orWhereHas('user_details', function($query) use($state) {
$query->whereIn('state', $state);
});
$users->where('created_at', '>=', $start_date);
$users->where('created_at', '<=', $end_date);
您可以使用 doesntHave
in conjunction with orWhereHas
创建所需的查询:
User::doesntHave('details')->orWhereHas('details', function($query) {
$query->where('state', '=', $state);
})->where('users.created_at', '>=', $start_date)
->where('users.created_at', '<=', $end_date)
->get();