Laravel - 如何在相关 table 和父 table 中同时添加 where 语句?
Laravel - How to add where statement within related table and parent table at the same time?
我有两个表:members(用户数据、电子邮件等)和 users(用户名、密码等)。所有用户都是成员,但并非所有成员都是用户。我在 laravel:
中定义了关系
Member.php
public function user() {
return $this->hasOne('App\Models\User');
}
现在我希望能够在不使用 join()
的情况下通过电子邮件或用户名(如果存在)检索会员的数据。基本上:
where('email','=','blah123')->orWhere('username','=','blah123')
我希望关系在它们自己的数组中返回,例如:
{
firstname: blah,
email: blah@blah.com,
user: [
username: blah123
]
}
当我使用 join()
时,它 returns 一个不理想的平面数组:
{
firstname: blah,
email: blah@blah.com,
username: blah123
}
我该怎么做?
如果我理解你的问题,你正在寻找这种解决方案:-
User::with('user')->where('email','=','blah123')->orWhere('username','=','blah123')->first();
您可以使用 with() 关键字来获取关系数据。希望对您有所帮助!
试试这个:
where('email','=','blah123')->orWhereHas('user', function($query) {
$query->where('username','=','blah123');
})->with('user')
我有两个表:members(用户数据、电子邮件等)和 users(用户名、密码等)。所有用户都是成员,但并非所有成员都是用户。我在 laravel:
中定义了关系Member.php
public function user() {
return $this->hasOne('App\Models\User');
}
现在我希望能够在不使用 join()
的情况下通过电子邮件或用户名(如果存在)检索会员的数据。基本上:
where('email','=','blah123')->orWhere('username','=','blah123')
我希望关系在它们自己的数组中返回,例如:
{
firstname: blah,
email: blah@blah.com,
user: [
username: blah123
]
}
当我使用 join()
时,它 returns 一个不理想的平面数组:
{
firstname: blah,
email: blah@blah.com,
username: blah123
}
我该怎么做?
如果我理解你的问题,你正在寻找这种解决方案:-
User::with('user')->where('email','=','blah123')->orWhere('username','=','blah123')->first();
您可以使用 with() 关键字来获取关系数据。希望对您有所帮助!
试试这个:
where('email','=','blah123')->orWhereHas('user', function($query) {
$query->where('username','=','blah123');
})->with('user')