Laravel - 如何在相关表和父表中同时添加where语句?

时间:2018-04-06 03:58:36

标签: php laravel eloquent models relationships

我有两个表:成员(用户数据,电子邮件等)和用户(用户名,密码等)。所有用户都是成员,但并非所有成员都是用户。我在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()时,它会返回一个不理想的平面数组:

{
    firstname: blah,
    email: blah@blah.com,
    username: blah123
}

我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

如果我理解你的问题,你正在寻找这种解决方案: -

User::with('user')->where('email','=','blah123')->orWhere('username','=','blah123')->first();

您可以使用 with()关键字来获取关系数据。希望它有所帮助!

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

答案 1 :(得分:0)

试试这个:

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