2015-02-23 123 views
0

我刚刚开始laravel5,但我还没有见过像laravel4那样的模型文件夹。 我的问题是。Laravel5:多对多的关系

1.模型文件夹驻留在laravel5中?

2. laravel5中处理manay关系有多少?

我有以下情况。

角色表 领域 id ROLE_NAME

用户表 id 用户名 电子邮件 密码

透视表 ROLE_USER id role_id user_id

+0

请任何一个向我提供正宗的资源形式,其中,因为我有项目,我需要将它升级到laravel5我可以开始laravel 5。 – user1875774 2015-02-23 11:17:18

+0

从4.2升级到5非常简单:阅读文档http://laravel.com/docs/master/upgrade#upgrade-5.0只需记住为控制器中使用的每个类添加“use namespace/class”。并且将命名空间添加到您的控制器也将有助于解决路由问题。 – maztch 2015-04-22 16:42:19

回答

0
  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查询关系。

0

您的应用程序模型应该是这样>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) 
{ 
    // 
} 
0

模型文件在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){ 
    // 
} 

这些是“延迟加载”,只在您访问它们时加载关系。

Here for more about model
Here for more about relationships