TP5模型更新timestamp数据无效,无任何报错。

TP5使用模型更新timestamp数据无效(要更新的字段为last_login_time,初始值为0000-00-00 00::00:00),无任何报错,sql语句没错。

以下是控制器的代码:

public function checkLogin(Request $request)
{

    try {
        $username = $request->param('username');
        $user = UserModel::get(['username'=>$username]);
        //$user = \app\market\model\User::getByUserName($request->param('username'));

        //判断尝试登陆attempt的次数
        if($user->attempt>6)
        {
            $arr2 = ['message'=>'由于尝试太过频繁,请稍后再尝试登陆'];
            echo json_encode($arr2);
            return ;
        }

        if ($request->param('password') == $user->password) {
            $_SESSION['user'] = $user;
            $newTime = date('Y-m-d H: i: s');
            $arr = ['message' => '登陆成功','resp'=>TRUE,'last_login_time'=>$newTime];

            //记录当前登录的时间
            
            $user->last_login_time = $newTime;
            $user->save(); 
            echo json_encode($arr);
            return ;
        } else {
            $arr = ['message' => '错误的用户名或密码'];
            echo json_encode($arr);
            //更新数据库attempt的值

            return ;
        }
    } catch(\Exception $e)
    {
        $this->error('错了哦');
    }
}

以下是模型部分代码:
class User extends Model

{

protected $name = 'user';
protected $type = [
    'create_time' => 'timestamp:Y/m/d',

];

}

以下是日志sql的代码:
[ 2017-08-04T21:49:09+08:00 ] ::1 ::1 POST /tp5/public/market/user/checklogin.html
[ sql ] [ DB ] CONNECT:[ UseTime:0.001628s ] mysql:dbname=market;host=127.0.0.1;port=3306;charset=utf8
[ sql ] [ SQL ] SHOW COLUMNS FROM market_user [ RunTime:0.006668s ]
[ sql ] [ SQL ] SELECT * FROM market_user WHERE username = 'admin' LIMIT 1 [ RunTime:0.000512s ]
[ sql ] [ SQL ] UPDATE market_user SET last_login_time='2017-08-04 21: 49: 09' WHERE id = 1 [ RunTime:0.000488s ]

以下是数据库创建代码:

CREATE TABLE market_user(

id int NOT NULL AUTO_INCREMENT,
username varchar(31) NOT NULL,
password varchar(31) NOT NULL,
create_time timestamp NOT NULL,
last_login_time timestamp NOT NULL,
attempt int NOT NULL,
PRIMARY KEY(id)

)ENGINE=INNODB AUTO_INCREMENT=1 CHARSET=utf8;

阅读 3k
2 个回答

先说结论:你定义$newtime的格式错误,$newTime = date('Y-m-d H: i: s'); H:i:s中间不应该有空格。


遇到这个问题可以考虑复制日志中的sql到mysql客户端运行一下。

新手上路,请多包涵

date('Y-m-d H: i: s',time())

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题