【问题标题】:Get one row in a Many To Many table via Table column通过表列在多对多表中获取一行
【发布时间】:2014-03-21 09:28:27
【问题描述】:

如果我有一个多对多表

Users
Roles
Role_User

角色有一个名字。 Role_User 包含一个枢轴值,即“值”。

如何轻松地从用户角色中按名称检索“一个”角色并获取数据透视数据?

喜欢:

$attr = $user->getRole('Admin');

$attr->pivot->value;

foreach 可能有效,但似乎有更有效的方法?没有?

【问题讨论】:

    标签: php laravel many-to-many


    【解决方案1】:

    定义关系时,您需要定义要从数据透视表中提取的列。

    public function roles()
    {
        return $this->belongsToMany('Role')->withPivot('value');
    }
    

    现在,不确定这是否是最好的方法,但如果您知道角色的 ID,它会变得容易得多。

    $role = $user->roles()->find(1); // Where 1 is the ID of the admin role
    
    dd($role->pivot->value);
    

    文档中有更多关于 working with pivot tables 的信息。

    【讨论】:

    • 是的,我知道,我想通过名称查询属性“角色”表有一个“名称”字段。可能吗?
    • 而不是 find 你会使用标准的where 然后first 来获得一条记录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 2019-10-23
    • 2015-03-24
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    相关资源
    最近更新 更多