Yii CDbCriteria et Model->findAll, comment ajouter une colonne personnalisée?
J'ai une application de calendrier dans Yii où je stocke les événements par l'utilisateur. J'aimerais créer dynamiquement un titre pour chaque événement.
Ce code est dans mon controller:
$criteria = new CDbCriteria;
$criteria->select = array('all_day','end','id','start');
$criteria->condition = 'user_id ='.$user->id;
$events = Calendar::model()->findAll($criteria);
foreach($events as $event) {
$event->title = 'test title';
}
echo CJSON::encode($events);
Dans mon Calendrier de modèle, j'ai ajouté une nouvelle propriété nommée $titre:
public $title;
Mais ensuite quand je vais faire l'écho de l'JSON, le titre ne s'affiche pas...
[{"all_day":false,"end":"-948712553","id":"2","start":"-146154706"}]
Que dois-je faire pour ajouter un titre pour le résultat JSON ensemble?
si vous voulez finalement à quelque chose comme ceci:
C'est correct.
{"title":"test title","all_day":false,"end":"-948712553","id":"2","start":"-146154706"}
?C'est correct.
OriginalL'auteur ews2001 | 2012-08-07
Vous devez vous connecter pour publier un commentaire.
Cela se produit parce que
CJSON::encode
code de la attributs de chaque modèle, et propriétés personnalisées ne sont pas ajoutés aux attributs du modèle. La façon dont les propriétés personnalisées sont ajoutés au modèle, cela ne peut être fait d'une manière simple.Je suis venu avec une solution de contournement si la prise de l'indice de cette réponse:
Le code ci-dessus devrait fonctionner.
title
à la fin de chaque ligne, mais bien sûr vous pouvez utiliser un peu plus de code à ajouter au début de chaque ligne si vous le souhaitez.Qui fonctionnait très bien, merci!
vous êtes les bienvenus, toujours un plaisir de vous aider
OriginalL'auteur bool.dev
vous pouvez étendre votre modèle et de fournir à votre nouvel attribut comme ceci:
mais ne serait-ce pas de conserver en permanence qui attribut la valeur "test" titre? Comment puis-je régler l'attribut de quelque chose d'autre?
créer un setter comme setTitle($titre) de la fonction.
OriginalL'auteur Mahdi Hijazi