我有一个显示书名的列表,用户可以在其中留下反馈。
我有2个表图书表和反馈表。
表格是针对用户在某本书上提供反馈的网站,一旦该用户留下了对该本书的反馈,我不再希望该书出现在该用户的书结果中,有很多用户会留下反馈对于同一本书。
一本书可以有很多反馈
我想做一些事情,例如如果用户已经在反馈表中留下了反馈,那么他们留下反馈的那本书就不会出现在结果中。
我不确定该怎么做?
我的反馈表如下所示:
ID
book_id
评分
反馈
用户身份
我的书桌看起来像这样:
ID
用户身份
标题
我将书的结果如下。
$books = Books::where('user_id', $id)->get();
我需要一些可以检查用户是否对书有反馈的条件,然后不要在结果中显示用户已经对书留下反馈的书。
最佳答案
只是做一个查询,即反馈为空,如果为空则将有结果,如果不是,则不会有结果,因此请使用是否询问反馈是否为空
$feedback = Feedback::where('user_id', $id)->get();
$feed = '';
if(!empty($feedback->feedback)){
$feed = $feedback;
}
return view('yourview')->with('feed', $feed);
如果您有联接表,您也可以这样做。在您的上位控制器上
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 来自2表的条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56843837/