【问题标题】:Where clause on join query laravel 4.2连接查询laravel 4.2的where子句
【发布时间】:2016-07-18 09:52:33
【问题描述】:

我有 2 个表“用户”和“即时用户”。我想在 users.id = instantUsers.user_id 上加入他们,并想在结果上添加 2 个 where 子句。我不知道如何做到这两点。我正在使用的查询是 -

DB::table('users')
    ->join('instantUsers', function($join) use ($userId) {
        $join->on('users.id', '=', 'instantUsers.user_id');
    })
    ->where('instantUsers.instantMode', '=', '1')
    ->where (function($query) use ($userId) {
        $query->where('instantUsers.user_id', '!=', $userId);
    })
    ->get();

【问题讨论】:

  • 我在前端得到状态码 500

标签: mysql laravel join laravel-4 where


【解决方案1】:

你可以试试这个,也许对你有帮助:

DB::table('users as table1')->join('instantUsers as table2','table1.id','=','table2.fkId') ->where('table2.instantMode','=','1')->where('table2.user_id','!=',$userId)->get();

【讨论】:

    【解决方案2】:

    您的'instantUsers.instantMode','=','1' 表达式可以在连接中完成,从而获得更好的性能。 我会这样写

    DB::table('users')
        ->join('instantUsers', function($join) use ($userId) {
            $join
                ->on('users.id', '=', 'instantUsers.user_id')
                ->on('instantUsers.instantMode', '=', 1);
        })
        ->where('users.id', '!=', $userId)
        ->get();
    

    【讨论】:

    • 究竟是什么不工作?如果有任何错误,它们是什么?能否提供数据库架构?
    • 它没有显示任何错误,只是状态码 500。此外,即使是简单的连接也不起作用。
    • 你能启用调试模式并提供堆栈跟踪吗?
    猜你喜欢
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    • 2019-03-19
    • 2019-01-29
    相关资源
    最近更新 更多