【问题标题】:Left join not working properly左连接无法正常工作
【发布时间】:2014-12-31 13:29:26
【问题描述】:

我正在尝试使用 laravel 使用以下查询搜索注册特定课程的所有用户。

$users = DB::table('users')
            ->leftJoin('registrationrequests', 'users.id', '=', 'registrationrequests.user_id')
            ->where('firstname', 'LIKE', "%$search%")
            ->orWhere('lastname', 'LIKE', "%$search%")
            ->orWhere('username', 'LIKE', "%$search%")
            ->where('registrationrequests.course_id', $course_id)
            ->where('registrationrequests.registered', 1)
            ->get();

在表registrationrequests 中,我有course_iduser_idregistered(二进制值)的列。 course_iduser_id 是各自表的外键。

我得到一个输出数组。但它没有检查条件where('registrationrequests.course_id', $course_id)

可能是什么原因?

【问题讨论】:

  • 是的,我查过了。它与此查询相同。
  • 所以你试过->where('registrationrequests.course_id', $course_id) ->where('registrationrequests.registered', 1) ->where(function($users){ $users->where('firstname', 'LIKE', "%$search%") ->orWhere('lastname', 'LIKE', "%$search%") ->orWhere('username', 'LIKE', "%$search%")}) ->get();
  • $users = DB::table('users') ->where('registrationrequests.course_id', $course_id) ->where('registrationrequests.registered', 1) ->where(function($users) use($search){ $users ->where('firstname', 'LIKE', "%$search%") ->orWhere('lastname', 'LIKE', "%$search%") ->orWhere('username', 'LIKE', "%$search%");}) ->get(); 这是我试过的。
  • 这是我得到 Column not found: 1054 Champ 'registrationrequests.course_id unknown in where clause (SQL: select * from `` users 的错误,其中 registrationrequests.course_id` 和 registrationrequests.registered = 7 = 1 和 (` firstname` LIKE Melwin%%% LIKE 或 @ 987654336@Melwin%用户名`LIKE or% Melwin%))

标签: php laravel laravel-4


【解决方案1】:

使用 http://laravel.com/docs/4.2/queries#advanced-whereshttps://stackoverflow.com/a/18660266/689579 您的查询看起来像 -

$users = DB::table('users')
        ->leftJoin('registrationrequests', 'users.id', '=', 'registrationrequests.user_id')
        ->where('registrationrequests.course_id', $course_id)
        ->where('registrationrequests.registered', 1)
        ->where(function($users) use($search){ 
                $users->where('firstname', 'LIKE', "%$search%")
                      ->orWhere('lastname', 'LIKE', "%$search%")
                      ->orWhere('username', 'LIKE', "%$search%")
        })
        ->get();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    相关资源
    最近更新 更多