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
- 没有一个。模型位于
App/
文件夹中。因为这是用户模型所在的位置。创建您自己的文件夹以拥有一个。
文档将涵盖这一点,发现 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",仅在您访问它们时加载关系。
我刚开始laravel5,但是没看到模型文件夹就跟laravel4一样。 我的问题是。
1.Where 模型文件夹位于 laravel5?
2.How 多对多关系句柄在 laravel5?
我有以下场景。
角色Table 字段 . 编号 . role_name
用户Table . 编号 . 用户名 . 电子邮件 . 密码
枢轴table role_user . 编号 . role_id . user_id
- 没有一个。模型位于
App/
文件夹中。因为这是用户模型所在的位置。创建您自己的文件夹以拥有一个。 文档将涵盖这一点,发现 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",仅在您访问它们时加载关系。