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() 关键字来获取关系数据。希望对您有所帮助!

参考:- https://laravel.com/docs/5.3/eloquent-relationships

试试这个:

where('email','=','blah123')->orWhereHas('user', function($query) { 
    $query->where('username','=','blah123');
})->with('user')