我有一个显示书名的列表,用户可以在其中留下反馈。

我有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/

10-12 16:11