Laravel Join 与 3 个表:综合指南
在本文中,我们将探索一种使用以下方法从三个表中检索数据的有效方法Laravel 强大的连接功能。
问题陈述
假设我们有一个类似 Twitter 的应用程序,包含三个表:Users、Followers 和 Shares。 Users 表包含用户信息,Followers 表表示相互关注的用户之间的关系,Shares 表存储用户分享的帖子。
我们的目标是检索特定用户的所有分享接下来。这涉及连接三个表以识别所需的数据。
初始方法
使用多个左连接的初始方法未产生预期结果。正确的方法是使用联接而不是左联接,并按如下方式连接表:
<code class="php">$shares = DB::table('shares') ->join('users', 'users.id', '=', 'shares.user_id') ->join('followers', 'followers.user_id', '=', 'users.id') ->where('followers.follower_id', '=', 3) ->get();</code>
在此联接中,我们从 Shares 表开始,并根据 user_id 字段与 Users 表联接。然后,我们根据 Users 表中的 user_id 字段和 Followers 表中的 follower_id 字段连接 Followers 表。
模型方法
如果您使用Eloquent 模型,您可以利用它们的关系方法来简化连接过程。这是一个示例:
<code class="php">$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</code>
在此示例中,我们急切地加载共享每个帖子的用户。 Shares.* 仅选择 Shares 表中的字段,不包括连接表。
结论
通过使用正确的连接语法并利用 Eloquent 模型关系,您可以高效地从 Laravel 中的多个表中检索数据。这种方法使您能够轻松过滤和访问复杂的数据关系。
以上是如何使用连接从 Laravel 中的三个表中检索数据:综合指南的详细内容。更多信息请关注PHP中文网其他相关文章!