【发布时间】:2016-01-12 18:04:00
【问题描述】:
$threads = Thread::leftjoin('users', 'users.id', '=', 'threads.user_id')
->leftjoin('users as poster','poster.id', '=', 'threads.user_id')
->leftjoin('forums_threads', 'forums_threads.thread_id','=','threads.id')
->leftjoin('threads_users', 'threads_users.thread_id','=','threads.id');
if($request->search){
echo 'Search:' . $request->search;
$threads->where('title', '=', $request->search);
}
if($request->author){
echo 'author:' . $request->author;
$threads->where('users.id', $request->author);
}
if($request->site){
echo 'site:' . $request->site;
$threads->where('threads.source', $request->site);
}
$threads->groupBy(array('threads.id', 'users.username','threads_users.boosts', 'users.id'))
->get(array('threads.*','users.username','threads_users.boosts'));
如果我对其执行 ->count() 操作,我会得到 3 的回报,这正是我所期望的。如果我执行 ->toSql() 我会看到预期的 sql 语句。但是,如果我执行类似 foreach($threads as $thread){ echo 'inside';} 之类的操作,我什么也不会显示。
【问题讨论】:
-
请执行 print_r($threads) 以查看您在哪个数组索引或哪个对象中获取数据。然后循环它。
-
您可能想要执行
$temp = $threads->where('title', '=', $request->search);,然后所有后续调用都为$temp = $temp->where('users.id', $request->author);以及$temp->get() -
Amit Shah - 当我执行 print_r 时,我得到了我认为是完整的模型对象。它里面有很多不相关的项目,它太大了,我的浏览器崩溃了。
标签: php laravel laravel-4 laravel-5