从数据透视表中检索单个列 - Laravel 5

时间:2015-06-17 07:45:57

标签: php laravel eloquent laravel-5

我正在使用数据透视表 genre_user 用户流派相关联。 表包含以下字段

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 循环。

2 个答案:

答案 0 :(得分:1)

我认为有助于您实现此行为的是lists()方法。 尝试像

这样的东西

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

如果您使用的是Forms&你可以做的HTML包

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

这是你的下拉列表

更多信息here(向下滚动到“检索列值列表”)

答案 1 :(得分:0)

user应该有一个genre

因此,您的模型应包含以下关系:

user.php的

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

Genre.php

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