![](/img/trans.png)
[英]CakePHP: Validate date as 'dmy' but save to MySQL as correct date
[英]CakePHP: Registering user does not save correct date
我有一个CakePHP应用程序,允许用户注册和发布项目。 在某些时候,尽管我一直在修改它,但我设法更改了在创建用户记录时捕获当前日期的方式:(当创建新用户帐户时,该日期默认为
Jan 19th 1970, 01:00
这是我在用户控制器中的注册动作:
function register()
{
if ( !empty( $this->data ) ){
if ( $this->data['User']['password']
== $this->Auth->password( $this->data['User']['password_confirm'])) {
$this->User->create();
if ( $this->User->save($this->data) ){
$this->redirect(array('action' => 'index'));
}
} else {
$this->Session->setFlash('password mismatch');
}
}
}
注册视图:
<?php
$currentdatetime = time();
echo $form->create( 'User', array('action' => 'register' ) );
echo $form->input('username', array( 'label' => 'Username' ) );
echo $form->input('fname', array( 'label' => 'First name' ) );
echo $form->input('lname', array( 'label' => 'Last name' ) );
echo $form->input('emailaddress', array( 'label' => 'Email Address') );
echo $form->input('website', array( 'label' => 'Website') );
echo $form->hidden( 'created', array( 'value' => $currentdatetime ) );
echo $form->input('password', array( 'label' => 'Password', 'type' => 'password') );
echo $form->input('password_confirm', array( 'label' => 'Retype Password', 'type' => 'password' ) );
echo $form->submit();
echo $form->end();
?>
我有一个具有创建的DATETIME列的用户表。 不为NULL,默认为'0000-00-00'
有人可以帮我吗? 我想我可能只是删除了一条鳕鱼线或其他东西
谢谢,
Jonesy
根据菜谱 , created
列的默认值必须为NULL
:
这些字段必须是日期时间字段,默认值设置为NULL,才能被CakePHP识别。
在插入时,如果有一个名为created
的DATETIME列,则cakePHP将自动填写日期。 您不需要自己填写日期。
如果您希望手动填写日期,则应以db格式(例如YYYY-MM-DD hh:mm:ss
)进行填写。 您的代码仅传递了unix时间戳,这就是为什么日期输入不正确的原因。
要手动提交日期,您有几个选择。 您可以使用日期函数:
$currentdatetime = date('Y-m-d H:i:s');
或者您可以使用数据库的本机功能。 对于MySQL,那将是NOW()
:
$this->data['User']['created'] = DboSource::expression('NOW()');
$this->User->save($this->data);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.