Select custom columns from Laravel belongsToMany relation

eloquent, laravel, many-to-many, select

Solution

Yes, you actually can.

Computer::with("users")->get(array('column_name1','column_name2',...));

Be careful though if you have the same column name for both tables linked by your pivot table. In this case, you need to specify the table name in dot notation, `tableName.columnName`. For example if both users and computer has a column name `id`, you need to do :

Computer::with("users")->get(array('users.id','column_name2',...));

Problem

Im trying to select only specific attributes on the many-to-many relation `users`, just like in one-to-one. But using `select()` on `belongsToMany()` seem to be ignored and i'm still getting all the User attributes. ``` 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(); ``` Is there a way of filtering only specified columns from related entity with `belongsToMany()`?

Original source

Related problems