J'utilise Laravel 5.5 . Je lis à ce sujet et je connais cette fonction et ça marche makeVisible
$hidden = ['password', 'remember_token', 'email'];
Je peux afficher un email en utilisant
$profile = auth()->user()->find($request->user()->id);
$profile->makeVisible(['email']);
Sur l'e-mail frontal est affiché. Mais ça ne marche pas sur beaucoup de résultats comme
// Get all users
$users = User::with('role', 'level')->makeVisible(['email'])->paginate(10); // Doesn't work
Essayez aussi cette méthode de Laracasts àJson cela fonctionne mais je ne peux pas le faire en utilisant paginate. Pouvez-vous fournir d'autres méthodes ou comment résoudre ce problème? Mon but est d’afficher la colonne email
qui est masquée. Merci.
Je résous cela en utilisant cette méthode.
Users.php
sur le modèle
public function toArray()
{
// Only hide email if `guest` or not an `admin`
if (auth()->check() && auth()->user()->isAdmin()) {
$this->setAttributeVisibility();
}
return parent::toArray();
}
public function setAttributeVisibility()
{
$this->makeVisible(array_merge($this->fillable, $this->appends, ['enter_relationship_or_other_needed_data']));
}
et sur le contrôleur juste un simple
return User::with('role', 'level')->paginate(10);
J'ai lu d'où venait la pagination toArray
avant de créer la pagination. Merci pour votre aide. Aide également
Vous pouvez utiliser ceci:
$paginator = User::with('role', 'level')->paginate($pageSize);
$data = $pagination->getCollection();
$data->each(function ($item) {
$item->setHidden([])->setVisible(['email']);
});
$paginator->setCollection($data);
return $paginator;
Vous pouvez essayer d'utiliser cette approche. Utilisation de Ressources API .
Ressources API vous permet de formater les données comme vous le souhaitez. Vous pouvez créer plusieurs objets Ressource pour formater vos collections de différentes manières.
Définissez votre paramètre visible (dans ce cas, email
) et lorsque vous devez renvoyer cet élément, vous pouvez utiliser un autre objet Resource qui renvoie cet élément.
Alors, quand pas besoin d'email:
$users = User::with('role', 'level')->paginate(10);
return UserWithoutEmail::collection($users);
quand un email est nécessaire:
$users = User::with('role', 'level')->paginate(10);
return UserWithEmail::collection($users);