Laravel5:很多很多关系

时间:2015-02-23 11:12:24

标签: javascript php jquery mysql laravel

我刚开始使用laravel5,但我还没有看到像laravel4那样的模型文件夹。 我的问题是。

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

2. laravel5中有多少男性关系?

我有以下情况。

角色表 领域 ID role_name

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

数据透视表 的 ROLE_USER   ID   role_id   user_id

3 个答案:

答案 0 :(得分:0)

  1. 没有一个。模型位于App/文件夹中。因为这是User模型所在的位置。创建自己的文件夹以拥有一个。
  2. 文档将涵盖此内容,找到here。这将介绍如何在相关模型中设置关系。

    public function roles(){  
        return $this->belongsToMany('App\Role', 'Pivot_table_name', 'foreign_key', 'other_key');  
    }
    
  3. 请注意:文档中涵盖了所有内容。

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

    该文档还包括使用找到的whereHas方法here查询关系。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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