【问题标题】:Adding additional constraints to Laravel Eloquent relations为 Laravel Eloquent 关系添加额外的约束
【发布时间】:2013-06-17 08:19:24
【问题描述】:

我有三张桌子:

Users
(id / username)

Folders
(id / name)

Folders_settings
(folder_id / user_id / order)

我希望能够选择用户的文件夹顺序。

在我的文件夹模型中:

//Folder Eloquent model
public function user()
{
    return $this->belongsTo('user')
}
public function settings()
{
    return $this->hasOne('FolderSettings');
}

我需要在 hasOne 关系中的 settings 关系中添加一个 user_id 约束。我该怎么做?

【问题讨论】:

    标签: laravel laravel-4 eloquent


    【解决方案1】:

    这是通过在用户模型中设置关系自动完成的。

    // Inside User.php
    public function settings()
    {
        return $this->hasMany('FolderSettings');
    }
    
    // Inside FolderSettings.php
    public function user()
    {
        return $this->belongsTo('User');
    }
    

    这应该选择 user_id 字段作为关系。然后,您可以(通过设置)获取特定用户的文件夹,如下所示:

    User::with('settings.folders')->find(1);
    

    【讨论】:

      【解决方案2】:

      那么,你需要用户文件夹的顺序吗?

      • 您希望 folders_settings 表将 用户 链接到 文件夹

      表格

      用户 - id、用户名

      文件夹 - id、名称

      folders_settings - id、folder_id、user_id、订单

      • 请注意,我的表格以小写字母开头,而且最后一个表格中有一个新字段。

      模型

          <?php
      
      class User extends Eloquent 
      {
          public function foldersetting()
          {
              return $this->hasOne('Foldersetting');
          }
      
      }
      
      
      class Foldersetting extends Eloquent 
      {
          protected $table = 'folders_settings';
      
          public function user()
          {
              return $this->belongsTo('User');
          }
      
          public function folder()
          {
              return $this->belongsTo('Folder');
          }
      }
      
      
      class Folder extends Eloquent 
      {
          public function foldersetting()
          {
              return $this->hasOne('Foldersetting');
          }
      }
      

      选择用户的文件夹顺序

      $user = User::with('foldersetting')->find($id);
      var_dump($user->foldersetting->order);
      

      这应该可以解决问题。 PS:未经测试,所以让我知道(如果)问题。

      【讨论】:

        猜你喜欢
        • 2021-02-04
        • 2021-07-07
        • 1970-01-01
        • 2015-09-11
        • 2015-05-21
        • 2017-09-22
        • 2019-06-20
        • 1970-01-01
        • 2014-10-23
        相关资源
        最近更新 更多