Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >Laravel: belongsToMany()不会在多对多表中获取字段

Laravel: belongsToMany()不会在多对多表中获取字段
EN

Stack Overflow用户
提问于 2014-01-15 15:10:27
回答 1查看 18.6K关注 0票数 7

请考虑下表:

代码语言:javascript
代码运行次数:0
复制
user
  id
  name

client
  id
  name

user_client
  user_id
  client_id
  rate
  ...

我想让我的控制器获取user表中的所有字段,然后列出它们的客户端namerate。用户和客户端模型:

代码语言:javascript
代码运行次数:0
复制
class User extends Eloquent {

    public function clients()
    {
        return $this->belongsToMany('Client', 'user_client');
    }

}

class Client extends Eloquent {

    public function users()
    {
        return $this->belongsToMany('User', 'user_client');
    }

}

没有适用于user_client的模型。

我的UsersController@show的摘录

代码语言:javascript
代码运行次数:0
复制
public function show($username) // foo.com/user/{$username}
{
  $user = User::where('username', '=', $username)->firstOrFail();
  $clients = User::find($user->id)->clients;

  return View::make('users.show', compact('user', 'clients'));
}

虽然运行得很好,但让我们来看一下视图users/show.blade.php

代码语言:javascript
代码运行次数:0
复制
<h1>{{$user->name}}</h1>
@foreach($clients as $client)
  <p>{{$client->name}}, {{$client->rate}}</p>
@endforeach

$client->rate未定义。检查我的查询调试器,belongsToMany将只选择client.*,但它不会选择user_idclient_id以外的任何内容。

如何修改User::find($user->id)->clients;,使其也选择user_client.*

编辑:在此期间,也欢迎您提出任何改进建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-15 20:20:52

如果您引用laravel docs on pivot tables,则需要在您的关系中添加withPivot

在您的示例中,您需要添加以下内容:

代码语言:javascript
代码运行次数:0
复制
class User extends Eloquent 
{

    public function clients()
    {
        return $this->belongsToMany('Client', 'user_client')->withPivot('rate');
    }
}

更新视图,如下所示:

代码语言:javascript
代码运行次数:0
复制
<h1>{{$user->name}}</h1>
@foreach($user->clients as $client)
    <p>{{$client->name}}, {{$client->pivot->rate}}</p>
@endforeach

我也会急切地加载客户端,以节省您的时间:

代码语言:javascript
代码运行次数:0
复制
public function show($username) // foo.com/user/{$username}
{
    $user = User::with('clients')->where('username', '=', $username)->firstOrFail();

    return View::make('users.show', compact('user'));
}

希望这能有所帮助:)

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21141039

复制
相关文章
SpringDataJpa多表查询 下(多对多)
比如A同学,它是我的学生,其中有个身份就是学生,还是家里的孩子,那么他还有个身份是子女。
暴躁的程序猿
2022/03/23
1.8K0
MyBatis-多表查询(多对多)
老师信息与学生信息为多对多的关系,一个学生有多个老师,一个老师同样可以有多个学生。要想知道老师下的学生信息,不能直接查到我们的学生信息,只能通过中间表(tors)才能关联到学生信息。
星哥玩云
2022/09/14
1.4K0
MyBatis-多表查询(多对多)
DRF中多对多ManytoMany字段的更新和添加
drf的序列化器给模型输出带来了便利但是对于多对多字段网上查询的内容却是很少(也有可能是本人不会搜答案)
对你的承诺
2023/09/07
9740
7. MyBatis多表查询 - 一对一 - 一对多 - 多对多
在上面我们已经准备好了 sql 表结构,在 sql 中具有 一对一、一对多、多对多 三种关系。而如果在 mybatis 的角度来看,却只有 一对一、一对多 两种关系,这是为什么呢?
Devops海洋的渔夫
2022/01/17
3.5K0
7. MyBatis多表查询 - 一对一 - 一对多 - 多对多
快速学习-Mybatis 多表查询之多对多
通过前面的学习,我们使用 Mybatis 实现一对多关系的维护。多对多关系其实我们看成是双向的一对多关系。
cwl_java
2020/04/01
5800
laravel 中字段格式处理
这里举一个简单的示例,在laravel 中,我们应当这样做: 在对应的Order 模型里定义
句小芒
2022/12/29
5030
MyBatis-多表查询(一对多)
班级信息和他的学生信息为一对多关系,并且在查询班级的信息过程中查询出学生信息。我们想到了左外连接查询比较合适。
星哥玩云
2022/09/14
7490
Mybatis的多表关联查询(多对多)「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/132932.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/14
1.7K0
Mybatis的多表关联查询(多对多)「建议收藏」
SQL Server 合并多对多表的数据
今天还是发一篇老文。介绍当时我合并博客文章数据时遇到的一个问题和解决方法。我不擅长SQL,如果大家有更好的方法,欢迎在评论里留言讨论。
Edi Wang
2019/07/08
2.5K0
SQL Server 合并多对多表的数据
SpringDataJpa多表查询 上(一对多)
一对一 一对多: 一的一方:主表 多的一方:从表 外键:需要再从表上新建一列作为外键,他的取值来源于主表的主键 多对多: 中间表:中间表中最少应该由两个字段组成,这两个字段做为外键指向两张表的主键,又组成了联合主键 注意:一对多关系可以看为两种: 即一对多,多对一。
暴躁的程序猿
2022/03/23
1.1K0
多表间的关系-一对多-多对多-一对一-外键约束
现实生活中,实体与实体之间肯定是有关系的,比如:老公和老婆,部门和员工,用户和订单、订单和商品、学生和课程等等。那么我们在设计表的时候,就应该体现出表与表之间的这种关系!表和表之间的关系分成三种:
Devops海洋的渔夫
2022/01/17
6.2K0
多表间的关系-一对多-多对多-一对一-外键约束
laravel 远程一对多实例
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112359.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/08
5600
laravel 远程一对多实例
Laravel源码分析之模型关联
上篇文章我们主要讲了Eloquent Model关于基础的CRUD方法的实现,Eloquent Model中除了基础的CRUD外还有一个很重要的部分叫模型关联,它通过面向对象的方式优雅地把数据表之间的关联关系抽象到了Eloquent Model中让应用依然能用Fluent Api的方式访问和设置主体数据的关联数据。使用模型关联给应用开发带来的收益我认为有以下几点
KevinYan
2019/10/13
9.6K0
还得再来聊聊Laravel中的对多对模型的一些事
之前,在文章:https://www.misiyu.cn/article/58.html 已经发过关于Laravel中的多对多关系了。
无道
2019/11/13
1.6K0
还得再来聊聊Laravel中的对多对模型的一些事
快速学习-Mybatis 多表查询之一对多
需求 查询所有账户信息,关联查询下单用户信息。 注意: 因为一个账户信息只能供某个用户使用,所以从查询账户信息出发关联查询用户信息为一对一查询。如果从用户信息出发查询用户下的账户信息则为一对多查询,因为一个用户可以有多个账户。
cwl_java
2020/04/02
6620
Laravel多对多关系详解【文章 - 标签】
今天弄了一天的关于文章的功能,其中主要卡在文章与标签的多对多的关系纠结中。卡了半天,终于算是解决了,不是很完美,但可以。
无道
2019/11/13
1.8K0
Laravel多对多关系详解【文章 - 标签】
laravel5.2 多表验证
然后我们在views目录下建一个admin文件夹,将layouts文件夹包括里边的内容都复制过来,再将home.blade.php文件复制过来,重命名一下dashboard,再建一个auth文件夹,将login和register文件放进去,如下图
horan1
2023/07/25
2160
laravel5.2 多表验证
Laravel Eloquent 模型关联关系详解(上)
我们所熟知的 MySQL、SQL Server、Oracle 都是关系型数据库,何谓关系型数据库?简单来说就是数据表之间存在关联关系。到目前为止,我们介绍的所有 Eloquent 模型操作都是针对单表的,接下来我们将花三篇左右的篇幅来给大家介绍如何在 Eloquent 模型类中建立模型之间的各种关联关系,以及如何实现关联查询和更新。
学院君
2023/03/03
10K0
Laravel Eloquent 模型关联关系详解(上)
点击加载更多

相似问题

Laravel播种多对多表

112

如何从多对多表中检索字段?

12

多对多,多对多表

11

获取多对多表的ids

121

如何从多对多表中获取id

18
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文