cakephp 蛋糕PHP补丁实体保存epoc

kt06eoxx  于 2022-11-11  发布在  PHP
关注(0)|答案(1)|浏览(131)

我继承了一个蛋糕应用程序,我有一些麻烦与日期时间的东西。
当我保存提交时,我必须将日期格式设置为Y-m-d。这允许patchEntities()保存,但当我检查数据库时,日期为epoc。
当前代码

$get_data = $this->request->getData();
                foreach ($get_data as $key => $value) {
                    if(isset($get_data[$key]['lease_submissions']) && is_array($get_data[$key]['lease_submissions'])){
                        foreach($get_data[$key]['lease_submissions'] as $key_i => $value_i){
                            var_dump(date("Y-m-d", strtotime($get_data[$key]['lease_submissions'][$key_i]['reporting_period'])));
                            $get_data[$key]['lease_submissions'][$key_i]['reporting_period'] = date("Y-m-d", strtotime($get_data[$key]['lease_submissions'][$key_i]['reporting_period']));
                        }
                    }
                }
                $leases = $this->Leases->patchEntities($leases, $get_data);
                echo "<pre>";
                var_dump($leases);
                echo "</pre>";
                die();
                $has_errors = false;
                foreach ($leases as $lease) {
                    if (!empty($lease->errors())) {
                        $has_errors = true;
                        $this->Flash->error('Lease reading could not be saved. Please check for any errors and try again.', 'flash', ['clear' => true]);
                        break;
                    }
                }

样品提交

array(2) {
    ["id"]=>
    string(3) "805"
    ["lease_submissions"]=>
    array(1) {
      [0]=>
      array(4) {
        ["lease_id"]=>
        string(3) "805"
        ["reporting_period"]=>
        string(10) "2021-09-01"
        ["num_bbls"]=>
        string(6) "209598"
        ["comments"]=>
        string(3) "dog"
      }
    }
  }

样本记录已保存

object(App\Model\Entity\LeaseSubmission)#305 (12) {
        ["lease_id"]=>
        int(805)
        ["reporting_period"]=>
        object(Cake\I18n\FrozenDate)#330 (3) {
          ["date"]=>
          string(26) "0169-05-08 00:00:00.000000"
          ["timezone_type"]=>
          int(3)
          ["timezone"]=>
          string(3) "UTC"
        }
        ["num_bbls"]=>
        float(209598)
        ["comments"]=>
        string(3) "dog"

正如你所看到的,reporting_period被设置为epoc。我被难住了,欢迎任何帮助。

kiz8lqtg

kiz8lqtg1#

答案是将bootstrap.php中的行更改为以下内容。

Type::build('date')->useLocaleParser()->setLocaleFormat('yyyy/m/d');

并确保其在整个站点中的一致性。
谢谢你的评论引导我走上正确的道路。

相关问题