Laravel5: 多对多关系

Laravel5: Many to many relationship

我刚开始laravel5,但是没看到模型文件夹就跟laravel4一样。 我的问题是。

1.Where 模型文件夹位于 laravel5?

2.How 多对多关系句柄在 laravel5?

我有以下场景。

角色Table 字段 . 编号 . role_name

用户Table . 编号 . 用户名 . 电子邮件 . 密码

枢轴table role_user . 编号 . role_id . user_id

  1. 没有一个。模型位于 App/ 文件夹中。因为这是用户模型所在的位置。创建您自己的文件夹以拥有一个。
  2. 文档将涵盖这一点,发现 here。这将介绍如何在您的相关模型中建立关系。

    public function roles(){  
        return $this->belongsToMany('App\Role', 'Pivot_table_name', 'foreign_key', 'other_key');  
    }
    

请注意:几乎所有内容都包含在文档中。

现在你有了你的关系,你可以在你的用户模型上像这样调用它$user = User::with('roles')->find(1);这会为你急切地将你的角色加载到模型中,并且可以像这样访问; $user->roles

该文档还介绍了使用找到的 whereHas 方法查询关系 here

你的应用模型应该是这样的 > app/Model/Role.php

namespace App\Model;设置为app/Model下的所有模型文件。

多对多关系

User.php

public function roles()
{
     return $this->belongsToMany('App\Model\Role');
}

Role.php

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

现在你可以这样使用了

$user = App\User::find(1);

foreach ($user->roles as $role) 
{
    //
}

模型文件在 app 目录中。当您安装新的 laravel 时,您应该会在 app 目录下看到一个 User.php 文件。

在您的 Role 模型中,您应该定义一个函数:

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

在您的 User 模型中,您应该定义一个函数:

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

如果您想获得属于用户的角色:

foreach($users as $user){
    $roles = $user->roles;
}

如果您想让用户处于一种角色下:

$users = $role->users;

foreach($users as $user){
    //
}

这些是 "lazy loading",仅在您访问它们时加载关系。

Here for more about model
Here for more about relationships