2015-06-17 2 views
0

Я использую сводную таблицу genre_user связать пользователя к жанру. таблица содержит следующие поляПолучение одного Колума из сводной таблицы - Laravel 5

id 
user_id 
genre_id 

Ниже приведены определения модели

User.php

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

Genre.php

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

я получаю результаты в виде коллекции когда я использую следующий код

$user = auth()->user(); 
dd($user->genres); 

Я хочу показать выбранные жанры в раскрывающемся списке жанров. Можно ли получить только текущие пользователи genre_id в виде массива из сводной таблицы без использования foreach цикл.

ответ

1

Я думаю, что это поможет вам достичь этого метода lists(). Попробуйте что-то вроде

$user_genres = auth()->user()->genres()->lists('name','id');

Если вы используете Forms & HTML пакет, который вы можете просто сделать

{!! Form::select('genres',$user_genres,null) !!}

А вот ваш выпадающий

Подробнее here (прокрутите вниз «Получение списка значений столбцов»)

+0

akad0, оно не работает –

+0

Что вас пытаться? Вы разобрались, как работает метод списков? Eloquent - это просто оболочка для вашей базы данных. Когда вы do '$ user() -> genres() -> get()' вы просто возвращаете коллекцию связанных экземпляров. Используя метод lists, вы можете получить только определенный столбец в виде массива со вторым параметром, используемым в качестве ключа массива. Также обратите внимание на @pespantelis. Вы создали правильные отношения внутри своей модели? –

+0

Извините, это действительно сработало. Это ошибка в коде. Я понял. Спасибо за вашу помощь. –

0

A user должен иметь один genre.

Таким образом, ваши модели должны содержать следующие соотношения:

User.php

public function genre() { 
    return $this->hasOne('App\Genre'); 
} 

Genre.php

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

pespantelis, пользователь может иметь несколько жанров. –

+0

Я хотел бы знать, что вы думаете. :П –

Смежные вопросы