select - updateexistingpivot - wherepivot laravel
Seleccione columnas personalizadas de Laravel belongsToMany relation (2)
Estoy tratando de seleccionar solo atributos específicos en los users
relaciones de muchos a muchos, al igual que en uno a uno. Pero el uso de select()
en belongsToMany()
parece ser ignorado y todavía obtengo todos los atributos de Usuario.
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();
¿Hay alguna manera de filtrar solo las columnas especificadas de la entidad relacionada con belongsToMany()
?
Sí, en realidad puedes .
Computer::with("users")->get(array(''column_name1'',''column_name2'',...));
Sin embargo, tenga cuidado si tiene el mismo nombre de columna para ambas tablas vinculadas por su tabla pivote. En este caso, debe especificar el nombre de la tabla en notación de puntos, tableName.columnName
. Por ejemplo, si tanto los usuarios como la computadora tienen una id
nombre de columna, debe hacer:
Computer::with("users")->get(array(''users.id'',''column_name2'',...));
Según Taylor Otwell, actualmente no es posible: https://github.com/laravel/laravel/issues/2679
Intenté usar una lists(''user.email'')
al final de la consulta pero no puedo hacerlo funcionar.