YII + beforeSave() + se max de la valeur à partir d'une ligne de tableau
j'ai du mal à obtenir mon beforesave dans Yii Cadre de travail de cette façon:
lorsque l'utilisateur envoie le formulaire, beforesave() doit aller chercher le plus grand nombre dans une colonne appelée "ordre" et insérer une valeur de l'ordre de+1 dans le courant de "l'ordre" du champ.
Après quelques heures passées ici la lecture des posts, j'ai réussi à compiler cette chose:
public function beforeSave()
{
if (parent::beforeSave())
{
if($this->isNewRecord)
{
$criteria->select='max(order) as myMaxOrder';
$get_it= new CActiveDataProvider(get_class($this),
array('criteria'=>$criteria,));
$got_it=$get_it->getData();
$whatweneed=$got_it[0]['myMaxOrder'];
$this->order=(int)$whatweneed+1;
}
return true;
}
else
return false;
}
Le code obtient le MAX de "l'ordre", mais je n'ai vraiment pas savoir comment traiter correctement avec les YII la méthode getData (), donc je var_dumped et vu que ce que je cherchais était là, mais je ne sais toujours pas comment accéder à cette valeur indépendamment de faire
$whatweneed=$got_it[0]['myMaxOrder'];
Pourriez-vous me dire comment le faire?
Vous devez vous connecter pour publier un commentaire.
Si vous configurez votre base de données de sorte que l'Ordre
id
est la Clé Primaire (il doit déjà être en tout cas), il suffit de le régler à "Incrément Automatique". Si Incrément Automatique est installé sur votre Clé Primaire (id
), puis quand voussave()
un Modèle dans Yii sansid
il va automatiquement enregistrer avec unid
un de plus que le max. Vous n'aurez pas besoin de faire quoi que ce soit dansbeforeSave()
à tous! Il est libre de fonctionnalité.Mais peut-être que je suis totalement malentendu votre question. Peut-être que ce n'est pas une auto-incrémentation de la colonne de clé primaire pour une raison quelconque. Dans ce cas, quelque chose comme cela devrait fonctionner (en supposant que votre modèle n'est qu'Ordre et vous colonne est aussi, pour une raison quelconque, appelé "ordre"):
Bonne chance!