Quel est le rôle de $hidden dans l'ORM Eloquent de Laravel ?
黄舟
黄舟 2017-05-16 16:48:27
0
3
531

À quoi sert $hidden ? Il est préférable de donner un exemple pour expliquer

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

répondre à tous(3)
巴扎黑

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字段的
大家讲道理

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'];

}
PHPzhong

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal