状态 - 已解决
我使用在laravel外面照亮ORM 。所以,工作得很好但是我遇到了关系问题。我想排除个人资料和 accountDetails 关系空或 null 的记录。目前我手动提取这些字段并创建另一个数组并返回它,但它有很多处理,所以有任何方法我可以为关系设置一些条件,如果它为null或空排除那些记录。
这是我的代码
$users = \App\User::where('account_type_id', 2)
->with('profile', 'accountDetails')
->get()
->toArray();
在用户模型中,我创建了两个关系,即。 个人资料和 accountDetails
public function profile()
{
return $this->hasOne('\App\UserProfile', 'user_id', 'id');
}
public function accountDetails()
{
return $this->hasMany('\App\Wallet', 'user_id', 'id');
}
先谢谢。 :)
对此有任何帮助。
答案 0 :(得分:4)
执行此操作的一种方法是使用连接机制。
$users = \App\User::join('profile','profile.user_id','=','user.id')
->join('wallet','wallet.user_id','=','user.id')
->where([
['user.account_type_id','=',2],
['profile.id','=',null],
['wallet.id','=',null]
])
->get()
->toArray();
加入:https://laravel.com/docs/5.2/queries#joins
第二种方法,使用雄辩的关系,
在用户模型:
上public function profile() {
return $this->hasOne('\App\UserProfile', 'user_id', 'id');
}
public function accountDetails(){
return $this->hasMany('\App\Wallet', 'user_id', 'id');
}
然后查询:
$users = \App\User::where('account_type_id', 2)
->has('profile')
->has('accountDetails')
->get()
->toArray();
has
查询方法:https://laravel.com/docs/5.2/eloquent-relationships#querying-relations