【问题标题】:Retrieving a single colum from a pivot table - Laravel 5从数据透视表中检索单列 - Laravel 5
【发布时间】:2015-09-02 07:40:16
【问题描述】:

我正在使用数据透视表 genre_userusergenre 关联起来。 表包含以下字段

id 
user_id 
genre_id

以下是模型定义

用户.php

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

流派.php

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

当我使用以下代码时,我得到的结果是一个集合

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

我想在流派的下拉字段中显示选定的流派。是否可以在不使用 foreach 循环的情况下仅从数据透视表中获取当前用户 genre_id 作为数组。

【问题讨论】:

    标签: php laravel eloquent laravel-5


    【解决方案1】:

    我认为可以帮助您实现这种行为的是lists() 方法。 尝试类似

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

    如果您使用的是表单和 HTML 包,您可以这样做

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

    这是你的下拉菜单

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

    【讨论】:

    • 你尝试了什么?您是否了解列表方法的工作原理? Eloquent 只是数据库的包装器。当您执行 $user()->genres()->get() 时,您只是返回了相关实例的集合。使用 lists 方法,您可以将特定列作为数组获取,第二个参数用作数组的键。还要看看@pespantelis 的答案。您是否在模型中创建了正确的关系?
    • 对不起,它确实有效。这是代码中的错误。我想到了。感谢您的帮助。
    【解决方案2】:

    user 应该有一个 genre

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

    用户.php

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

    类型.php

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

    【讨论】:

    • pespantelis,用户可以有多种流派。
    • 我想知道你的想法。 :P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    • 2015-09-10
    • 1970-01-01
    • 2015-01-27
    • 2021-11-07
    • 2016-03-09
    • 2015-09-21
    相关资源
    最近更新 更多