J'ai un objet Vendeur associé à un utilisateur. Je dois remplir une sélection de LaravelCollective, donc je dois faire quelque chose comme ceci:
{!! Form::selectGroup('seller_id', 'Seller', Seller::with('user')->pluck('user.first_name', 'id')->toArray(), null) !!}
Le problème est que je ne peux pas prendre les champs des relations (user.first_name).
Comment puis-je le faire?
MISE À JOUR
Je veux éviter de faire ça ...
<?php
$sellers = [];
Seller::with('user')->get()->each(function ($seller) use (&$sellers) {
$sellers[$seller->id] = $seller->user->first_name;
});
?>
Vous pouvez utiliser la méthode pluck
de Laravel comme:
$sellers = Seller::with('user')->get()->pluck('user.first_name', 'id')
Vous pouvez y arriver en utilisant join()
& pluck()
comme ceci:
$s = Seller::join('users', 'sellers.user_id', '=', 'users.id')
->pluck('sellers.id', 'users.id')
->all();
Cela donnerait un tableau comme ceci:
[
'seller_id_1' => 'user_id_1',
'seller_id_2' => 'user_id_2',
'seller_id_3' => 'user_id_3',
'seller_id_4' => 'user_id_4',
'seller_id_n' => 'user_id_n',
];
J'espère que cela t'aides!
Vous pouvez également définir les colonnes dont vous avez besoin dans la relation. C'est bien si vous avez toujours besoin de ces colonnes pour la relation donnée. Exemple:
Class Seller extends Model {
...
public function user()
{
return $this->hasOne(user::class, 'id')
->select('id', 'first_name');
}
}