У меня было поле под названием issue_date в таблице, которая была типом даты в MySQL, и я изменил дату.
Когда я пытаюсь сохранить дату в базе данных, она сохраняет ее
(например, 2196), когда реальная дата – 2003 год, я сделал вывод объекта перед сохранением и показывая реальную дату (2003-06-30)
Поле – issue_date
.
Это моя функция для сохранения:
public function populate(){ $this->tangoModel=$this->loadModel('Tango'); $tango=$this->tangoModel->getInvoices(); $this->obrasModel=$this->loadModel('Obras'); $obras=$this->obrasModel->getObras(); foreach($tango as $invoice){ $data[] = ([ 'issue_date' => date('Ym-d', strtotime($invoice['issue_date'])), 'type' => $invoice['type'] ] ); } print_r($data); $invoices = $this->Invoices->newEntities($data); foreach($invoices as $invoice){ if ($this->Invoices->save($invoice)) { $this->Flash->success(__('The invoice has been saved.')); }; } }
Это вывод одного объекта массива данных:
[0] => Array ( [issue_date] => 2003-06-30, [type] => CRE )
И это результат того, как вставляется в MySQL
[{"id":"1", "issue_date":"2196-11-06", "type":"CRE" }]
Таким образом, поле проверяется в файле InvoicesTable в /Model/Table
:
public function validationDefault(Validator $validator) { $validator ->add('id', 'valid', ['rule' => 'numeric']) ->allowEmpty('id', 'create'); $validator ->add('issue_date', 'valid', ['rule' => 'date']) ->allowEmpty('issue_date'); $validator ->allowEmpty('type'); return $validator; } }
Это файл сущности Invoice.php в /Model/Entity
/** * Invoice Entity. * * @property int $id * @property \Cake\I18n\Time $issue_date * @property string $type */ class Invoice extends Entity { /** * Fields that can be mass assigned using newEntity() or patchEntity(). * * Note that when '*' is set to true, this allows all unspecified fields to * be mass assigned. For security purposes, it is advised to set '*' to false * (or remove it), and explicitly make individual fields accessible as needed. * * @var array */ protected $_accessible = [ '*' => true, 'id' => false, ]; }
благодаря