我有一个图书列表,用户可以在其中留下反馈。
我有 2 个表:图书表和反馈表。
这些表格适用于用户对某本书提供反馈的网站,一旦用户对该书留下了反馈,我就不再希望该书出现在该用户的图书结果中,有很多用户会这样做为同一本书留下反馈。
一本书可以有很多反馈
我想做一些事情,比如如果用户已经在反馈表中留下了反馈,那么他们留下反馈的那本书不应出现在结果中。
我不知道如何去做?
我的反馈表如下所示: ID 书号 评分 反馈 用户 ID
我的图书表如下所示: ID 用户身份 标题
我将图书结果拉取如下。
$books = Books::where('user_id', $id)->get();
我需要一些东西来检查用户是否已为图书留下反馈,然后不要在结果中显示用户已留下反馈的图书。
最佳答案
只需执行一个查询,反馈为空,如果为空,就会有结果,如果不是,当然不会有结果,所以使用 if 来询问反馈是否为空
$feedback = Feedback::where('user_id', $id)->get();
$feed = '';
if(!empty($feedback->feedback)){
$feed = $feedback;
}
return view('yourview')->with('feed', $feed);
如果你有连接表,你也可以这样做。在你的上 Controller 上放置
use DB;
$feedback = DB::table('feedback as f')
->join('books as b', 'b.id', '=', 'f.book_id')
->join('user as u', 'user.id', '=', 'u.id')
->where('u.id',$id)
->select('u.*','f.*','b.*')->get();
$feed = '';
if(!empty($feedback->feedback)){
$feed = $feedback;
}
return view('yourview')->with('feed', $feed);
关于mysql - Laravel Eloquent Where 条件来自 2 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56843837/