我刚刚开始laravel5,但我还没有见过像laravel4那样的模型文件夹。 我的问题是。Laravel5:多对多的关系
1.模型文件夹驻留在laravel5中?
2. laravel5中处理manay关系有多少?
我有以下情况。
角色表 领域 。 id 。 ROLE_NAME
用户表 。 id 。用户名 。电子邮件 。密码
透视表 ROLE_USER 。 id 。 role_id 。 user_id
我刚刚开始laravel5,但我还没有见过像laravel4那样的模型文件夹。 我的问题是。Laravel5:多对多的关系
1.模型文件夹驻留在laravel5中?
2. laravel5中处理manay关系有多少?
我有以下情况。
角色表 领域 。 id 。 ROLE_NAME
用户表 。 id 。用户名 。电子邮件 。密码
透视表 ROLE_USER 。 id 。 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;
下的应用程序/型号的所有模型文件。
多对多的关系
user.php的
public function roles()
{
return $this->belongsToMany('App\Model\Role');
}
作用。PHP
现在你可以使用这样的
$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){
//
}
这些是“延迟加载”,只在您访问它们时加载关系。
请任何一个向我提供正宗的资源形式,其中,因为我有项目,我需要将它升级到laravel5我可以开始laravel 5。 – user1875774 2015-02-23 11:17:18
从4.2升级到5非常简单:阅读文档http://laravel.com/docs/master/upgrade#upgrade-5.0只需记住为控制器中使用的每个类添加“use namespace/class”。并且将命名空间添加到您的控制器也将有助于解决路由问题。 – maztch 2015-04-22 16:42:19