【问题标题】:Laravel5 Eloquent select from multiple table with where clauseLaravel5 Eloquent 从带有 where 子句的多个表中选择
【发布时间】:2015-10-26 10:14:19
【问题描述】:

如何在 Laravel Eloquent 中做这个查询?

SELECT * FROM `ftm_users`, `ftm_students`, `ftm_user_verification` WHERE `ftm_users`.`user_group` = 3 AND `ftm_user_verification`.`verification_status` = 1 AND `ftm_users`.`uid` = `ftm_students`.`uid` AND `ftm_users`.`uid` = `ftm_user_verification`.`uid`

我已经在模型中设置了关系,我已经尝试过了

$userStudent = User::where('user_group', '=', 3)->with(array('userVerification' => function($query) {
        $query->where('verification_status', '=', 1);
    }, 'student', 'studentParents'))->simplePaginate(20);

但查询是使用单独的选择语句从不同的表中获取数据。

谢谢。

【问题讨论】:

  • 您显示的查询将不起作用,您必须使用连接来过滤另一个表。
  • 您能否更具体地回答您的问题?您的第一个 mysql 语句显示了进行连接的尝试。第二个代码是尝试选择过滤记录。

标签: php mysql laravel laravel-5 eloquent


【解决方案1】:

假设您定义了ftm_usersftm_user_verification之间的关系,您可以使用whereHas方法过滤相关模型

$userStudent = User::where('user_group', '=', 3)->whereHas('userVerification', function ($query) {
    $query->where('verification_status', '=', 1);
})->get();

查看文档中的Querying Relationship Existence

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 1970-01-01
    相关资源
    最近更新 更多