Orm Laravel-以另一种方式进行了多次尝试

Orm Laravel-以另一种方式进行了多次尝试,orm,eloquent,laravel-5.1,relation,Orm,Eloquent,Laravel 5.1,Relation,在laravel docu中,有一个通过多个用户的关系的例子:国家有许多通过用户的帖子 但就我而言,我需要这样的东西: 用户通过客户扮演许多角色 我想从用户到角色有很多贯穿关系 有没有办法让它这样工作 编辑 我用一种收集方法解决了我的问题: public function roles() { $roles = $this->hasMany('SC\Customer')->get()->each(function($item) { return $i

在laravel docu中,有一个通过多个用户的关系的例子:国家有许多通过用户的帖子

但就我而言,我需要这样的东西: 用户通过客户扮演许多角色

我想从用户到角色有很多贯穿关系

有没有办法让它这样工作


编辑 我用一种收集方法解决了我的问题:

public function roles() {
    $roles = $this->hasMany('SC\Customer')->get()->each(function($item) {
        return $item->role();
    });
    return $roles;
}

这完全取决于你想要完成什么

在大多数需要定义角色的情况下,创建一个单独的连接表的透视表将是一个很好的方法

幸运的是,Laravel的文档很好地涵盖了这一点,您可能会在本节中找到答案:

继续阅读这一部分,一路往下,Taylor深入探讨了主题以及不同场景的各种解决方案

假设您有许多用户和许多角色(管理员、用户、版主)等。其中许多用户可以具有不同的角色,也可能具有其他属性,例如他们是否是客户。首先创建用户、角色表(或任何其他需要的内容)

然后,您可以创建一个连接数据透视表,比如说role\u user。在其中,您可以指定外键用户id,从用户表中指定标识,从角色表中指定角色id

通过指定外键,可以将用户附加到角色,然后附加到另一列中所需的任何属性。因此,如果透视表中有另一列是“customer”,它可以是1/0(is customer/is not customer),或者您想添加另一个外键,它可以是customer\u id,表示customer表中的id


这一切都取决于你想要完成什么,但很容易被雪上加霜。在实际编码以获得抽象概述之前,使用UML软件对其进行建模可能是一个好主意。我推荐你

然后,在用户模型中,您可以通过指定关系来绑定它们,如下所示:

return $this->belongsToMany('App\Role')->withPivot('column1', 'column2');

谢谢你的回答,但是简单的多对多关系不是一个选项。在我的例子中,客户对象是“pivot”表,因为我需要与其他对象的三元关系。我已经更新了答案,希望它能帮助您:)再次感谢。我知道,我想,我已经非常熟悉docu了。我的pivot表(客户)比所描述的方法所能涵盖的更困难。客户不只是需要其他“简单”的数据透视。它与其他对象(模块)具有多态关系.无论如何,我想我已经用一种简单的收集方法解决了这个问题。请参见编辑。哦,我明白了,从您提供给我们的有限信息中,我不知道这一点。下次尝试更详细一点,您可能会得到更好的帮助。无论如何,很高兴您解决了这个问题。.祝您的应用好运!:)