【问题标题】:Select a table based on select result from another table根据另一个表的选择结果选择一个表
【发布时间】:2015-02-15 12:44:50
【问题描述】:

我有一张表Registrationrequests,其中有course_iduser_id 以及其他一些字段。

$users_id = Registrationrequest::where('course_id', $query_course_user)->where('registered', 1)->get();

从上面的query 它给了我一个结果数组。但我需要从另一个表 Users 中获取这些 user_id 的详细信息。我正在使用 Laravel。表模型为RegistrationrequestUser

如何从上述选择结果中获取用户详细信息?我在Joins方面不是那么好。有什么建议吗?

【问题讨论】:

    标签: php sql laravel laravel-4


    【解决方案1】:

    使用 Eloquent 的 whereHas 方法:

    $courseId = Request::get('course_id');
    
    $users = User::whereHas('registrationRequests', function($query) use ($courseId)
    {
        $query->where('course_id', $courseId)->where('registered', 1);
    });
    

    这假设您已在 User 模型中设置了正确的关系。如果没有,请将此方法添加到您的用户模型中:

    public function registrationRequests()
    {
        return $this->hasMany('Registrationrequest');
    }
    

    【讨论】:

    • 我试过这个:$query_course_user=Request::get('course_id'); if($query_course_user!=null) { $users = User::whereHas('registrationrequests', function($query) { $query->where('course_id', $query_course_user)->where('registered', 1); }); } 但将 $query_course_user 显示为未定义变量!
    • 错误:Call to undefined method Illuminate\Database\Query\Builder::registrationrequests() 这个registrationrequests 是另一个表
    • relationship's method name 是什么意思?我只是laravel的初学者。对不起,如果我听起来很愚蠢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    相关资源
    最近更新 更多