Laravel SQL选择用户电子邮件谁列出了状态=已列出的房间

时间:2018-10-03 08:25:46

标签: mysql sql laravel-5

我有这两个表:

**users**
id | name | email | ...
-----------

**rooms**
user_id | title | status | ...
---------------------------

我如何选择所有用户的电子邮件,其中包含Laravel 5中列出了房间状态的房间?

2 个答案:

答案 0 :(得分:1)

您必须执行的操作,必须使用“ with”和“ has”

    $user = User::with(['room'])->whereHas('room,function($query){
            $q->where('status',1);

    })->get();

创建“用户和房间”模型以及用户名“房间”中的关系。 可能是以上一种解决您的问题

答案 1 :(得分:0)

如果您已经定义了App\UserApp\Room这样的模型之间的关系。

class User {
    /* other codes in your model goes here */
    public function rooms(){
        return $this->hasMany(App\Room::class);
    }
}

class Room {
    /* other codes in your model goes here */
    public function user(){
        return $this->belongsTo(App\User::class);
    }
}

您可以检索所有列出房间状态的房间的用户电子邮件

$users= \App\User::with(['rooms' => function($query){
    $query->where('status', 'listed');
}])->pluck('email');