PhpactiveRecord, mise à jour maintenant () pour un objet
-
14-11-2019 - |
Question
J'ai tenté d'utiliser PHPACIVERECORD pour un projet .. et j'ai du mal à voir si je peux réellement passer une fonction MySQL grâce à l'une de ses méthodes de mise à jour natives. Je suis un peu surpris de ne pas avoir trouvé de réponse à cette question nulle part ailleurs = p.
Edit: Après un an d'utilisation du cadre, une réponse simple est de simplement faire:$object->date = 'now'
La solution
Si je comprends correctement, vous voulez appeler NOW()
Pour mettre à jour un champ d'horodatage. Il existe plusieurs options.
Utilisez un champ "Updated_at": http://www.phpactiverecord.org/projects/main/wiki/Utitile #Automatic-Timestamps
Les modèles avec des champs nommés Created_at et Updated_at auront ces champs mis à jour automatiquement lors de la création de modèles et des mises à jour du modèle.
Faites une sorte de mise à jour sur un rappel: http://www.phpactiverecord.org/projects/main/wiki/Callbacks
Mettez-le simplement à la mise à jour en utilisant une fonction PHP manuellement
$obj->yourDateField = new \DateTime();
Autres conseils
Bien que je puisse être hors base, mais je pense que directement vous ne transmettez pas SQL dans un enregistrement actif. Cependant, ma compréhension de l'enregistrement actif (de travailler avec la version de Yii de l'enregistrement actif) est que Active Record est construit sur une CDBConnection, de la classe CactiveRecord:
/ ** * @var cdbconnection La connexion de la base de données par défaut pour toutes les classes d'enregistrements actifs. * Par défaut, il s'agit du composant d'application 'db'. * @see getDBConnection * /
Dans YII pour accéder à cela, vous pouvez utiliser le code:
$sql = 'select * from mytable';
$rows = Yii::app()->db->createCommand($sql)->queryAll();
Si vous n'utilisez pas YII, vous devrez chercher comment accéder à l'objet DB.