mysql - Laravel Eloquent Where 条件来自 2 个表

标签 mysql laravel eloquent

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

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

相关文章:

mysql - 在存储过程中显示消息

mysql - 对左连接的结果进行排序

laravel - 禁用 Laravel Redis 缓存

Laravel/Eloquent - 主要 id 字段递增问题

php - 使用资源在我的 json 响应中返回许多对象

mysql - 在表上显示 MySQL 数据记录 NULL

MySQL - 使用 UNION ALL 获取错误的表字段,但结果是正确的

javascript - Laravel 5.2 日期选择器

mysql - 用 3 个关系保存数据 eloquent

php - 如何在 laravel 上不使用 get() 启动模型