2013-06-17 5 views
0

У меня есть три таблицы:Добавление дополнительных ограничений в отношения Laravel красноречивого

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'); 
} 

Мне нужно добавить user_id ограничение в отношении параметров в hasOne отношении. Как я могу это сделать ?

ответ

0

Итак, вам нужен заказ папки пользователя в?

  • вы хотите folders_settings таблицу связать пользователя в папку.

Столы

пользователей - идентификатор, имя пользователя

папки - идентификатор, имя

folders_settings - идентификатор, 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: не проверено, поэтому дайте мне знать о (если) проблемах.

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); 
Смежные вопросы