Laravel 连接 3 个表

2024-02-22

我正在构建一个类似 Twitter 的应用程序。有一个提要,我只想在其中显示我关注的用户的帖子。

我尝试了所有连接,但似乎没有任何效果。

我有3张桌子:Users, Followers, Shares

表格如下所示:

Users: id

追随者: user_id, follower_id

Shares: user_id

我需要得到的是“所有共享,其中 share.user_id = follower.follower_id” “ANDWHERE followers.user_id = users.id”

假设,users.id 是 3,我尝试了这个:

$shares = DB::table('shares')
        ->leftjoin('followers', 'shares.user_id', '=', 'followers.follower_id')
        ->leftjoin('users', 'followers.user_id', '=', 'users.id')
        ->where('users.id', 3)
        ->where('shares.user_id', 'followers.follower_id')
        ->get();

但这不起作用。

任何帮助表示赞赏:)


我相信你的加入是错误的:

$shares = DB::table('shares')
    ->join('users', 'users.id', '=', 'shares.user_id')
    ->join('followers', 'followers.user_id', '=', 'users.id')
    ->where('followers.follower_id', '=', 3)
    ->get();

我还建议您将表命名为follows相反,感觉更自然地说user has many followers through follows and user has many followees through follows.

Example

$shares = DB::table('shares')
    ->join('users', 'users.id', '=', 'shares.user_id')
    ->join('follows', 'follows.user_id', '=', 'users.id')
    ->where('follows.follower_id', '=', 3)
    ->get();

模型方法

我没有意识到你正在使用DB::查询而不是模型。所以我正在修正答案并提供更多的清晰度。我建议你使用模型,对于那些从框架尤其是 SQL 开始的人来说要容易得多。

型号示例:

class User extends Model {
    public function shares() {
        return $this->hasMany('Share');
    }
    public function followers() {
        return $this->belongsToMany('User', 'follows', 'user_id', 'follower_id');
    }
    public function followees() {
        return $this->belongsToMany('User', 'follows', 'follower_id', 'user_id');
    }
}
class Share extends Model {
    public function user() {
        return $this->belongsTo('User');
    }
}

模型使用示例:

$my = User::find('my_id');

// Retrieves all shares by users that I follow
// eager loading the "owner" of the share
$shares = Share::with('user')
    ->join('follows', 'follows.user_id', '=', 'shares.user_id')
    ->where('follows.follower_id', '=', $my->id)
    ->get('shares.*'); // Notice the shares.* here

// prints the username of the person who shared something
foreach ($shares as $share) {
    echo $share->user->username;
}

// Retrieves all users I'm following
$my->followees;

// Retrieves all users that follows me
$my->followers;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 连接 3 个表 的相关文章

  • MySQL LIKE %string% 不够宽容。我还有什么可以用的吗?

    我有一位客户询问他们的搜索是否可以搜索公司名称 这些名称可以根据用户输入以多种格式进行搜索 例如数据库中存储的公司是 A J R Kelly Ltd 如果用户搜索 一个 J R Kelly 被发现 使用
  • Laravel - 停止并发访问记录

    在 Laravel 中 有什么方法可以停止同时与同一条记录交互 例如 如果用户 A 正在编辑一条记录 那么我同时需要阻止用户 B 编辑同一条记录 注意 我在 Laravel 5 2 中使用 SESSION DRIVER file 目前大约有
  • 通过 SQLAlchemy 获取随机行

    如何使用 SQLAlchemy 从表中选择一个或多个随机行 这在很大程度上是一个特定于数据库的问题 我知道 PostgreSQL SQLite MySQL 和 Oracle 具有通过随机函数排序的能力 因此您可以在 SQLAlchemy 中
  • 维护/更新mysql中的记录顺序

    我在 mySql 中有一个记录表 我需要按照用户指定的方式维护它们的订单 所以我添加了一个 位置 列 当我移动特定记录时更新所有记录的 SQL 语句是什么 我有类似的东西 UPDATE items SET position 2 WHERE
  • 外键和索引

    我有 2 张桌子 products and 类别 每个类别有很多产品 一个产品可以属于多个类别 products product id int primary auto increment name unique etc 类别 catego
  • SQL Server 2012:有条件地增加计数器用户 ROW_NUMBER()

    我正在尝试申请ROW NUMBER 根据特定条件增加计数器 我的数据如下所示 目标计数器是Prep column id DSR PrepIndicator Prep 1662835 1 1 1 1662835 14 2 2 1662835
  • 如何计算 Postgres 上图表中所有连接的节点(行)?

    我的桌子有account id and device id One account id可以有多个device ids 反之亦然 我正在尝试计算每个连接的多对多关系的深度 Ex account id device id 1 10 1 11
  • 自动提取数据 - Oracle SQL Developer

    我通过 SQL Developer 连接到 Oracle 数据库 我想编写一个返回每月数据集的查询 然后将该数据提取到分隔文本文件中 我知道如何做到这一点就好了 我想知道是否有一种方法可以编写一个脚本来运行查询并在一年内逐月提取数据 这样我
  • Laravel 广播:通知与事件

    我阅读了 laravel 文档Events and Notifications 似乎我们可以触发一个事件 并从该事件中触发 使用ShouldBroadcast接口 将其广播到我理解的 laravel echo 另一方面我们可以使用通知via
  • 如何将 mysql 转换为 mysqli? [复制]

    这个问题在这里已经有答案了 我厌倦了将 mysql 转换为 mysqli 但似乎收到了很多错误和警告 连接到数据库没有问题 但其余代码似乎错误 我做错了什么 sql
  • 在 PostgreSql 中计算百分比

    例如我有一个这样的表 string adm A 2 A 1 B 2 A 1 C 1 A 2 通过 SQL 查询 我想要这样的结果 string perc adm A 50 B 100 C 0 我想要每个字符串中数字 2 出现的百分比 我可以
  • 如何连续添加起始行和下一行的值

    我只想创建一个 sql 查询 结果就像图片上的那样 类似于 SQL 中的斐波那契数列 Ex Column 1 10 则 Result 列的值为 Result 10 因为这是第一行 然后假设column1第二行的值为50 那么Result第二
  • 如何更新 pl/sql 中嵌套表的列? [复制]

    这个问题在这里已经有答案了 我正在尝试在表中创建一个可以存储多个值的列 如下所示 我有一个学生id std和一个名为marks可以采用几个值 例如2 3 4 我想更新此列表以添加另一个标记2 3 4 5但我不知道怎么做 我如何更新专栏mar
  • 通过JS Laravel访问存储目录

    有没有办法访问storage目录 该目录已经链接到publicJS 中的目录 我正在尝试制作一个上传图片的表单 验证脚本 if request gt hasFile photos marker gt photos request gt ph
  • 计算 mysql 数据库行数的最佳方法

    在遇到 mysql 查询加载时间慢的问题后 我现在正在寻找计算行数的最佳方法 我曾经愚蠢地使用过mysql num rows 函数来做到这一点 现在意识到这是最糟糕的方法 我实际上正在制作一个分页来用 PHP 制作页面 我找到了几种计算行数
  • hive sql查找最新记录

    该表是 create table test id string name string age string modified string 像这样的数据 id name age modifed 1 a 10 2011 11 11 11 1
  • sqlite3从打印数据中删除括号

    我创建了一个脚本 用于查找数据库第一行中的最后一个值 import sqlite3 global SerialNum conn sqlite3 connect MyFirstDB db conn text factory str c con
  • 当复选框条件更改时,如何使用ajax更新mysql数据库?

    我有一个在客户端按行显示的文章表 每篇文章都有一个唯一的 ID 并包含一个复选框以指示该文章是否被选中为收藏夹 如果它是最喜欢的 则该复选框已被选中 如果没有 则未选中 现在 如果特定于每一行的复选框条件发生变化 我需要 js 或 jque
  • MySQL - 选择一行 - 然后相对于所选行的下一个和上一个

    我会尽力澄清这一点 我需要在不使用 id 的情况下选择特定行和该选定行的前一个相对行以及该选定行的下一个相对行 这可能吗 简而言之 上一篇和下一篇 我不能 也许我只是不知道如何 使用 id 的原因是因为它们不是按顺序排列的 正如您从这个相当
  • “pdo_mysql”已禁用,我无法启用它。我在 iMac 7.1 OSX 10.6.8 上安装了 MAMP v. 3.0.4

    pdo mysql 已禁用 我无法启用它 我在 iMac 7 1 OSX 10 6 8 上安装了 MAMP v 3 0 4 在我的 phpinfo 页面上 我可以看到唯一启用的 PDO 是 sqlite 如果我查看 php 5 5 10 扩

随机推荐

  • 如何找到矩阵元胞数组中每个维度的最大值?

    我得到一个元胞数组A由不同大小的矩阵组成 例如 我可以有一个三元素元胞数组 其中每个元素的维度为 A 1 gt 4 x 3 A 2 gt 16 x 4 A 3 gt 5 x 14 我将如何遍历元胞数组并返回最大值每个维度全面的 例如 示例中
  • 在自定义列表视图中一次仅选择一个单选按钮,android

    我正在尝试制作自定义列表视图 列表视图中的每个条目都有一个图像视图 一个文本视图和一个单选按钮 我终于列出了列表 但现在我在选择单选按钮时遇到了问题 我想要的是每当用户单击条目中的任意位置时 这应该设置相应的单选按钮并自动取消选择列表中的其
  • 创建后更改 google-analytics TrackingId

    描述 我有一个使用 googleanalytics 代码的单页应用程序 该应用程序适用于 4 个不同国家的顶级域名 例如www example de www example at www example be 等 也可以在不更改域名的情况下
  • 等待循环点击

    在开始之前 我知道已经有一个thread https stackoverflow com questions 19509296 wait for a user event关于这一点 但不幸的是它对我没有任何帮助 所以这是我的问题 我有一个用
  • 如何从 Laravel 项目中公共图像的 URL 中删除 /storage?

    我想要实现的目标是从 URL 中删除 storage 以便最终它是www example com images x jpg而不是默认的www example com storage x jpg 我尝试从 storage 中删除url in
  • IE中Excel导出问题

    我有这个脚本可以将mysql数据导出到excel 我努力了 一切 但我无法让这个脚本适用于 IE 这 脚本使用 FireFox 或 Chrome 下载数据 但 IE 失败并且 说 Internet Explorer 无法从 www mysi
  • 堆栈跟踪中的神秘行

    While 调查堆栈跟踪差异 https stackoverflow com questions 42462750 why java enum need to check class and declaringclass in compar
  • 设置 google.visualization.DataTable 的列宽

    我想更改 google visualization DataTable 中列的宽度 但是我不知道该怎么做 Fiddler https jsfiddle net dgbh6sL0 1 https jsfiddle net dgbh6sL0 1
  • viewDidLoad 在启动时在 rootViewController 上被调用两次

    有谁知道为什么这个根View Controller s viewDidLoad启动时被调用两次 这让我发疯 这是从第一次到的堆栈跟踪viewDidLoad 0 0x0000276a in RootViewController viewDid
  • JavaScript 中的鼠标光标位置?

    如何在javascript中获取光标X和Y var curX ns6 e pageX event clientX ietruebody scrollLeft var curY ns6 e pageY event clientY ietrue
  • 从字典的字典创建内部值的列表

    我试图找出字典内部值的最大值和最小值dicts The dict看起来像这样 ALLEN PHILLIP K bonus 4175000 exercised stock options 1729541 expenses 13868 BADU
  • 为什么 MongoDb 文档 id 前面有一个下划线?

    为什么 MongoDb 文档 id 前面有一个下划线 为什么不称其为 id 而不是 id 这是我不知道的命名约定的一部分吗 您可能会注意到 MongoDB 有很多函数 在 shell 中 和字段以 understore 开头 表示它们是内部
  • 如何在 WordPress 中创建自定义用户角色 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我必须在 WordPress 中为用户创建审阅者 自定义 角色 如何创建自定义规则 您可以使用add role https devel
  • 带有参数 url 创建的 symfony2 twig 路径

    我得到以下信息 a href Aktivieren a creates 后端 类别 激活 8 1 然后我得到了 a href 这创造了 类别 id 1 看到不同 我想要的是在第二种情况下与第一种情况完全相同 类别 1 我该如何处理这个问题
  • 在 C# 中查询事件日志中消息内容的最简单方法是什么?

    我对 感兴趣编写一些代码来查询 Windows 事件日志以获取特定的错误消息内容 如中所述这篇 MSDN 文章 http msdn microsoft com en us library bb671200 28v vs 90 29 aspx
  • Django 中的 {% %} 和 {{ }}

    我正在学习 Django 遇到了 2 组特殊字符 我以前从未见过这样使用过 我可以猜测它们在示例中的用途 但不了解它们的范围 他们是 if registered user form as p 我添加了if registered and us
  • 为什么“inline-block”元素会自动清除它们的子元素?

    display inline block用于许多clearfixes 1 http css tricks com snippets css clear fix 2 http perishablepress com lessons learn
  • asp.net 中的后台工作者(线程池)

    我有一个 ASP NET Web 表单 它将大约 25 30 个项目 包含用户从表单发出后续请求时所需的信息 写入自定义缓存中 目前 所有这些都是在主线程上同步发生的 但在较高负载下 addcache 正在成为瓶颈 如何在后台运行此任务而不
  • 如何将 BeautifulSoup.ResultSet 转换为字符串

    所以我解析了一个html页面 findAll BeautifulSoup 到名为变量result 如果我输入result在 Python shell 中然后按 Enter 我看到了预期的普通文本 但是当我想将此结果作为字符串对象进行后处理时
  • Laravel 连接 3 个表

    我正在构建一个类似 Twitter 的应用程序 有一个提要 我只想在其中显示我关注的用户的帖子 我尝试了所有连接 但似乎没有任何效果 我有3张桌子 Users Followers Shares 表格如下所示 Users id 追随者 use