Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL中的CakePHP错误日期_Php_Mysql_Cakephp_Cakephp 3.0 - Fatal编程技术网

MySQL中的CakePHP错误日期

MySQL中的CakePHP错误日期,php,mysql,cakephp,cakephp-3.0,Php,Mysql,Cakephp,Cakephp 3.0,我在MySQL中的一个表中有一个名为issue_date的字段,它是datetime类型,我改为date 当我试图将日期保存到数据库时,使用 奇怪的年份(例如2196年),当实际日期为2003年时,我在保存对象之前对其进行了输出,并显示了实际日期(2003-06-30) 该字段为issue\u date 这是我保存的功能: public function populate(){ $this->tangoModel=$this->loadModel('Tango');

我在MySQL中的一个表中有一个名为issue_date的字段,它是datetime类型,我改为date

当我试图将日期保存到数据库时,使用
奇怪的年份(例如2196年),当实际日期为2003年时,我在保存对象之前对其进行了输出,并显示了实际日期(2003-06-30)

该字段为
issue\u 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('Y-m-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"
    }]
这是在
/Model/Table
中的InvoicesTable文件中验证字段的方式:

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;
    }
}
这是
/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,
    ];
}

谢谢

它在控制器中添加了以下内容:

use Cake\Database\Type; 
Type::build('date')->setLocaleFormat('yyyy-MM-dd');

多亏了ndm,它在控制器中添加了以下内容:

use Cake\Database\Type; 
Type::build('date')->setLocaleFormat('yyyy-MM-dd');

多亏了ndm

将列的类型从
datetime
更改为
date
之后,您是否清除了CakePHP缓存?这是更改数据库结构后出现奇怪错误时要检查的第一件事。是的,我已经删除了/tmp/cachehow中的所有内容,即mysql输出的“2196-11-06”。你说字段是datetime?现在字段是Date,最初,当我使用CakePHP烘焙表时,它是datetime什么是
intl.default\u locale
设置的?您是否使用过
DateTimeType::setLocaleFormat()
Time::setToStringFormat()
?这可能很有趣:将列的类型从
datetime
更改为
date
后,是否清除了CakePHP缓存?这是更改数据库结构后出现奇怪错误时要检查的第一件事。是的,我已经删除了/tmp/cachehow中的所有内容,即mysql输出的“2196-11-06”。你说字段是datetime?现在字段是Date,最初,当我使用CakePHP烘焙表时,它是datetime什么是
intl.default\u locale
设置的?您是否使用过
DateTimeType::setLocaleFormat()
Time::setToStringFormat()
?这可能很有趣:我建议不要在控制器中这样做(而是在引导中),除非它真的应该只应用于那个特定的控制器!我建议不要在控制器中这样做(而是在引导中),除非它实际上只应用于特定的控制器!