模型不返回任何内容,但运行Query会返回记录

时间:2016-06-21 04:36:57

标签: eloquent laravel-5.2

在我的控制器中,我有以下代码:

    $threads = MessageThread::whereExists(function($query) {
            $messid = '`' . env('DB_PREFIX') . 'message_threads`.`id`';

            $query->select(\DB::raw(1))
                ->from('message_thread_participants')
                ->where('message_thread_participants.message_thread_id', '=', $messid); // AND message_thread_participants.user_id = ' . $user_id);
            })  
        ->orderBy('message_threads.created_at', 'DESC')
        ->take(30)
        ->get();

如果我使用DB :: getQueryLog()打印出结果查询,我会得到以下内容:

  

[{       “query”:“select * from bd45_message_threads where exists(从bd45_message_thread_participants中选择1,其中   bd45_message_thread_participantsmessage_thread_id =?)排序依据   bd45_message_threadscreated_at desc limit 30“,       “绑定”:[         “bd45_message_threadsid”       ]       “时间”:1.06}]

我手动运行该查询(用绑定代替?,我得到预期的30个结果.....但代码本身没有返回结果......我认为使用模型和Where存在之间存在一些问题。 ..但现在只是猜测....任何人都有任何线索为什么查询会返回Navicat或PHPMyAdmin中的结果,但控制器返回一个空白数组?

1 个答案:

答案 0 :(得分:0)

我参加聚会有点晚了,但如果有人有同样的问题,那一定是因为你必须使用

->whereColumn('bd45_message_thread_participants.message_thread_id', 'bd45_message_threads.id')

比较两列值。 ->where期望比较列和值,而不是另一列。