【问题标题】:Laravel5: Many to many relationshipLaravel5:多对多关系
【发布时间】:2015-02-23 11:12:23
【问题描述】:

我刚刚启动了laravel5,但是还没有看到和laravel4一样的model文件夹。 我的问题是。

1.模型文件夹在laravel5中的位置?

2.laravel5中有多少关系句柄?

我有以下场景。

角色表 字段 . 标识 . 角色名称

用户表 . 标识 . 用户名 . 电子邮件 .密码

数据透视表 role_user . 标识 . 角色 ID . 用户 ID

【问题讨论】:

  • 请任何人提供我可以启动 laravel 5 的真实资源表格,因为我有项目,我需要将其升级到 laravel5。
  • 从 4.2 升级到 5 非常简单:阅读文档laravel.com/docs/master/upgrade#upgrade-5.0 只需记住为您在控制器中使用的每个类添加“使用命名空间/类”。向控制器添加命名空间也有助于解决路由问题。

标签: javascript php jquery mysql laravel


【解决方案1】:
  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

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

【讨论】:

    【解决方案2】:

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

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

    多对多关系

    用户.php

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

    角色.php

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

    现在你可以这样使用了

    $user = App\User::find(1);
    
    foreach ($user->roles as $role) 
    {
        //
    }
    

    【讨论】:

      【解决方案3】:

      模型文件位于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

      【讨论】:

        猜你喜欢
        • 2017-01-30
        • 2018-06-15
        • 2014-10-11
        相关资源
        最近更新 更多