Выбор Laravel из сводной таблицы

У меня есть три таблицы: пользователи, элементы и user_items. У пользователя много элементов, а элемент принадлежит многим пользователям.

**Users**
id
username
password

**Items**
id
name

**User_items**
id
user_id
item_id

Модели:

class User extends Eloquent {
public function items()
{
return $this->belongsToMany('Item', 'user_items', 'item_id', 'user_id');
}
}

class Item extends Eloquent {
public function users()
{
return $this->belongsToMany('User', 'user_items', 'user_id', 'item_id');
}
}

Мне нужно выбрать все элементы таблицы, распечатать его и выделить строки, которые принадлежат конкретному пользователю id = 1.

введите описание изображения здесь

Выбор выделен вывод:

введите описание изображения здесь

Какой правильный способ сделать это (в стиле Laravel)?

0

Решение

Вы можете использовать это так

public function user_items()
{
return $this->belongsToMany('User', 'user_items', 'user_id', 'item_id')->withPivot('id');
}

Таким образом, вы можете получить доступ к значениям третьей таблицы.

Некоторые полезные ссылки
http://www.developed.be/2013/08/30/laravel-4-pivot-table-example-attach-and-detach/
http://vegibit.com/many-to-many-relationships-in-laravel/

http://laravel.com/docs/4.2/eloquent

1

Другие решения

Вы можете сделать это так …

class User extends Eloquent {
public function items()
{
return $this->belongsToMany('Item', 'user_items', 'item_id', 'user_id')->withPivot('id');
}
}

class Item extends Eloquent {
public function users()
{
return $this->belongsToMany('User', 'user_items', 'user_id', 'item_id')->withPivot('id');
}
}

От контроллера ..

$user_id = 2;
Item::with(['users'=>function($q) use ($user_id){$q->where('user_id',$user_id);}])->get();

Во время просмотра списка вы можете выделить строку, просто воспользовавшись условием, поскольку каждый элемент -> пользователи пуст или нет.

0

По вопросам рекламы [email protected]