Maison > Questions et réponses > le corps du texte
À quoi sert $hidden ? Il est préférable de donner un exemple pour expliquer
巴扎黑2017-05-16 16:50:27
La documentation est très claire. Masquer les attributs lors de la conversion en tableau ou JSON
Parfois, vous souhaiterez peut-être limiter les données d'attribut qui peuvent apparaître sous forme de tableau ou au format JSON, telles que les champs de mot de passe. Ajoutez simplement l'attribut caché au modèle
class User extends Model {
protected $hidden = ['password'];
}
$user = user::find($userId);
dump($user);//里面是木有password字段的
大家讲道理2017-05-16 16:50:27
Parfois, vous souhaiterez peut-être limiter les attributs inclus dans le tableau ou le formulaire JSON de votre modèle, tels que les mots de passe. Pour ce faire, ajoutez une définition de propriété cachée à votre modèle
class User extends Model {
protected $hidden = ['password'];
}
PHPz2017-05-16 16:50:27
Vous pouvez masquer n'importe quel contenu après le résultat de la requête Model toArray(). L'utilisation de base a été expliquée ci-dessus. Permettez-moi de parler de l'utilisation légèrement plus avancée que j'utilise habituellement
1 Masquer un certain champ.
2 Vous pouvez masquer la relation obtenue par la requête via la méthode with.
3 Il peut également être utilisé avec $appends pour modifier le format des données de retour.
Par exemple, il existe une table User et une table UserInfo Lors de l'interrogation, tous les champs de User + un certain champ ClomnX dans UserInfo sont obligatoires. Mais je ne souhaite pas renvoyer l’intégralité des informations UserInfo. (Bien sûr, il peut être traité de manière plus simple en effectuant une requête dans le contrôleur. Je donne juste un exemple de traitement unifié utilisant Model)
class User extends Model {
protected $hidden = ['userInfo'];
protected $appedns = ['ClomnX']
//声明一个关系,user和userInfo是一对一的关系
public function userInfo()
{
return $this->hasOne(UserInfo::class);
}
public function getClomnXAttribute()
{
//判断使用了with方法关联了UserInfo。
if (isset($this->getRelations()[UserInfo])) {
return $this->UserInfo->ClomnX;
} else return null;
}
class TestController
{
$user = user::with('userInfo')->find($userId);
dump($user->toArray());//返回中没有UserInfo的数组信息,只有其中一个字段。
}
Ceci n'est qu'un exemple simple, des opérations de formatage plus complexes peuvent également être mises en œuvre via cette méthode. C'est une bonne idée.