运行Insert语句时,碳日期为空

时间:2017-05-14 05:56:01

标签: php laravel date php-carbon

我正在使用Carbon来使用MySQL来管理PHP中的日期,但是我遇到了一个简单的Insert语句问题。要使用Medoo运行SQL语句,这是我要插入的代码:

public function register($code, $fullname, $address, $phones, $email, $now){

    $registration = $this->_app['medoo']->insert("customers",[
        'cus_code' => $code,
        'cus_fullname' => $fullname,
        'cus_address' => $address,
        'cus_phone_s' => $phones,
        'cus_email' => $email,
        'created_at' => $now
    ]);


    return $registration;

}

这就是我传递价值的地方:

$code = $request->get('code');
$name = $request->get('name');
$phones = $request->get('phone_s');
$address = $request->get('address');
$email = $request->get('email');
$now = Carbon::now('America/Monterrey');

$customer_registration = $app['customer.model']->register($code, $name, $address, $phones, $email, $now);`

if($customer_registration){
     $request_status = true;
 }else {
     $request_errors[] = "Ocurrio un error al registrar el cliente";
 }

该语句返回错误,如果我调试它,这是输出:

INSERT INTO "customers" 
("cus_code", "cus_fullname", "cus_address", "cus_phone_s", "cus_email", "created_at") 
 VALUES 
('n20', 'notaria 20', 'lerdo 202', '1234567890', 'mail@mail.com')

正如你所看到的,日期已经缺失,它没有任何意义,因为如果我在我的功能中回应它......

public function register($code, $fullname, $address, $phones, $email, $now){
   echo '<p>this is the variable now: '.$now.'</p>';
    $this->_app['medoo']->debug()->insert("customers",[
        'cus_code' => $code,
        'cus_fullname' => $fullname,
        'cus_address' => $address,
        'cus_phone_s' => $phones,
        'cus_email' => $email,
        'created_at' => $now
    ]);

    die();

    return $registration;

}

...输出

  this is the variable now: 2017-05-14 00:52:00

  INSERT INTO "customers" 
  ("cus_code", "cus_fullname", "cus_address", "cus_phone_s", "cus_email", "created_at") 
  VALUES 
  ('n20', 'notaria20', 'lerdo 202', '1234567890', 'mail@mail.com')

我为Date更改了 $ now (&#39; Y-m-d H:m:s&#39;)并且它有效,但对于我的应用,我需要使用Carbon。

我希望我对此很清楚,我对英语不太满意,请帮忙!

1 个答案:

答案 0 :(得分:0)

这个问题的答案是在评论中,而不是在SO中发布的方式,所以我在这里发布答案来结束这个问题。

此处他需要以SQL格式传递时间戳,因为laravel的insert()不会影响created_atupdated_at值,需要手动添加created_at}值,所以手动将其传递给insert()方法的正确方法应该是:

Carbon::now('America/Monterrey')->format('Y-m-d H:m:s');

因此代码看起来应该是这样的

$now =Carbon::now('America/Monterrey')->format('Y-m-d H:m:s');
$this->_app['medoo']->debug()->insert("customers",[
        'cus_code' => $code,
        'cus_fullname' => $fullname,
        'cus_address' => $address,
        'cus_phone_s' => $phones,
        'cus_email' => $email,
        'created_at' => $now
    ]);