向Laravel雄辩关系添加附加约束

向Laravel雄辩关系添加附加约束,laravel,laravel-4,eloquent,Laravel,Laravel 4,Eloquent,我有三张桌子: 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() {

我有三张桌子:

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约束。如何才能做到这一点?

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

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

// Inside FolderSettings.php
public function user()
{
    return $this->belongsTo('User');
}
这应该选择用户id字段作为关系。然后,您可以(通过设置)获得特定用户的文件夹,如下所示:

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

那么,您需要用户文件夹的订单吗

  • 您希望文件夹设置表将用户链接到文件夹
表格

    <?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');
    }
}
用户-id、用户名

文件夹-id、名称

文件夹设置-id、文件夹id、用户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');
    }
}
这应该能奏效。PS:未测试,请告知(如果)问题。