【发布时间】:2015-09-17 01:31:03
【问题描述】:
我想将此查询转换为 Eloquent:
SELECT *
FROM news
WHERE who_see='6'
OR (news.id_user IN
(SELECT id_user
FROM koneksi_user
WHERE to_id_user='$user->id_user'
AND confirmed='0')
OR news.id_user IN
(SELECT to_id_user
FROM koneksi_user
WHERE id_user='$user->id_user'
AND confirmed='0')))
ORDER BY created_at DESC
到目前为止,我已经尝试过:
$user = \Auth::user();
return \DB::table('news')
->where('who_see','6')
->orWhereIn('news.id_user', function($query)
{
$query->select('id_user')
->from('koneksi_user')
->whereRaw('to_id_user = $user->id_user');
})
->orWhereIn('news.id_user', function($query2)
{
$query2->select('id_user')
->from('koneksi_user')
->whereRaw('id_user = $user->id_user');
})
->get();
但是我收到了这个错误:
SQLSTATE[42601]: 语法错误: 7 错误: 'sintaks error' pada atau didekat « $ » LINE 1: ... "id_user" from "koneksi_user" where to_id_user = $user->id_... ^ ( SQL: select * from "news" where "who_see" = 6 or "news"."id_user" in (select "id_user" from "koneksi_user" where to_id_user = $user->id_user) or "news"."id_user" in (从“koneksi_user”中选择“id_user”,其中 id_user = $user->id_user))
我该如何解决这个问题?
【问题讨论】:
-
所以你只是想得到解决方案?向我们展示您迄今为止的尝试。
-
return \Status::with('likes') ->with('user.profil.foto') ->with('foto') ->with('cmets.owner.profil. foto') ->with('cmets.like') //->where('who_see', [6,$user->id_user_group]) ->orWhereIn('who_see', [6,$user->id_user_group] ) ->orWhereIn('news.id_user',"array([select id_user from koneksi_user where to_id_user=$user->id_user and confirm='0'])") ->orderBy('created_at', 'desc') - >分页(20);
-
我投票决定将此问题作为题外话结束,因为这个问题属于“gimme hte codez”类型。
-
我只是想问,因为我很麻烦,但是为什么我收到的回复是这样的?是否像我这样的初学者要问?如果这个话题确实会提前结束。
-
由于您的问题表述不正确,您最初得到的答复过于苛刻。你刚刚提出了一个查询并要求它提供 Eloquent 代码,这看起来就像你在寻求解决方案。下次包括你从一开始就尝试过的代码,以及对问题的解释,你不会得到不好的回复。您还应该阅读帮助中心的Asking Section,了解如何在 StackOverflow 上以正确的方式提问。