当前位置: 首页 > 知识库问答 >
问题:

Laravel-我应该在哪个模型上定义透视表?

甘明朗
2023-03-14

让我在这里展示Laravel文档中的场景:相关的数据库表是usersrolesrole_users。表名是不言而喻的。

class User extends Model
{
    /**
     * The roles that belong to the user.
     */
    public function roles()
    {
        return $this->belongsToMany('App\Role');
    }
}
return $this->belongsToMany('App\Role', 'role_user');

然后定义关系的逆:

角色模型:

class Role extends Model
{
    /**
     * The users that belong to the role.
     */
    public function users()
    {
        return $this->belongsToMany('App\User');
    }
}

然后它说:

共有1个答案

陆子石
2023-03-14
/**
* On the User model
*/
public function roles()
{
    return  $this->belongsToMany('App\Role', 'role_users', 'user_id', 'role_id')->withTimestamps();
}


/**
* On the roles model
*/
public function users()
{
    return  $this->belongsToMany('App\Role', 'role_users', 'role_id', 'user_id')->withTimestamps();
}

其中role_users是数据透视表,第一个参数是foreignpivotkey,第二个参数是relatedpivotkey

这样,您在两个模型上都有一个完整的关系。您可以访问所有用户角色和viceversa

 类似资料:
  • 我在Laravel应用程序中有两个模型,联系人和地址彼此相关。 联系人字段:[id,姓名]地址字段:[id,地址,联系人id] 在联系人模型中,我添加了: 在地址模型中,我添加了: 我想知道在函数上交换hasOne和belongsTo是可以的,还是会违反现有的任何约定。 如下联系人字段:[id,name,address\u id]地址字段:[id,address] 我这样问的原因是因为我想创建一个

  • 问题内容: 我在ASP.Net中有一个WebAPI 2.0项目,在其中实现了自定义的DefaultContractResolver,以便可以控制如何使用JSON.Net将实体序列化为JSON。但是我不确定如何告诉框架使用我的自定义实现。我也想知道是否有可能更改特定控制器/动作的ContractResolver。 谢谢! -–编辑03/07/2014我已经通过创建一个新的ConfigSettings

  • 问题内容: 我正在尝试使用Express和ejs渲染模板的模板。至于节点应用程序的标准结构,我有一个app.js文件,其中包含如下功能: 我有some_template.ejs文件,该文件如下所示调用此函数: 而且效果很好。但是,我大约有15-20个这样的函数,并且我不想在app.js中定义所有这些函数。还有其他地方可以定义这些函数并以与我现在相同的方式在模板中调用它们吗?如果是,那么定义它们的方

  • 我正在尝试为没有它们的包装提供类型: 我在带有打字稿 2.4.2 的 webpack 中使用 ts-loader,并且在 tsconfig.json 中设置了以下类型根: 我试图模仿: < code>index.d.ts中包含以下内容: 但是错误仍然存在。我做错了什么?我应该把那些自定义的. d.ts文件放在哪里? 和任何其他类型根之间有什么区别?为什么TypeScript会区别对待它们?

  • 我试图创建一个关系,通过一个名为年级的模型访问一个名为注释的表,通过年级中的学生加载 年级模型和学生模型都属于其他模型 根据我的理解,不可能访问需要透视表的hasManyThrough关系(注释没有年级标识符,只有学生标识符) 我为Laravel 4@HasManyThrough找到了这些函数,它们具有一对多关系,但它给了我一个错误类“App\illumb\Database\Eloquent\Re

  • 我有一个有两个透视表的表单。其中一个工作很好,但我似乎不能使第二个工作,尽管他们是相当相似的。不起作用的是一个名为'photos'的图像表和名为'releases'的表单上载。我使用“photo_id”和一个“release_id”字段将数据透视表称为“photo_releases”。 数据库透视表 下面是发布模式 和照片模式 和ReleaseController 此函数中使用了两个透视表。使用