从 Laravel 的belongsToMany 关系中选择自定义列

Gre*_*gus 5 select many-to-many laravel eloquent

我试图只选择多对多关系上的特定属性users,就像一对一一样。但是使用select()onbelongsToMany()似乎被忽略了,我仍然获得所有用户属性。

class Computer extends Eloquent {
    public function users() {
        return $this->belongsToMany("User")->select("email");
    }

    public function admin() {
        return $this->hasOne("User")->select("email");
    }
}

Computer::with("users")->get();
Run Code Online (Sandbox Code Playgroud)

有没有办法只过滤来自相关实体的指定列belongsToMany()

Mar*_*ark 4

是的,你确实可以

Computer::with("users")->get(array('column_name1','column_name2',...));
Run Code Online (Sandbox Code Playgroud)

但如果数据透视表链接的两个表具有相同的列名称,请小心。在这种情况下,您需要以点符号 指定表名称tableName.columnName。例如,如果用户和计算机都有列名id,您需要执行以下操作:

Computer::with("users")->get(array('users.id','column_name2',...));
Run Code Online (Sandbox Code Playgroud)