gpt4 book ai didi

php - CakePHP 3 - 保存实体 ID/创建/修改未使用 sqlite 填写

转载 作者:搜寻专家 更新时间:2023-10-31 21:04:59 25 4
gpt4 key购买 nike

我过去曾使用过 cake 1 和 2,这是我第一次使用 cakephp 3。

我尝试做一些相当简单的事情,连接到一个 sqlite 数据库并创建一条记录。

我希望自动填写 id、created 和 modified 字段。可能是因为我用的是sqlite,表定义不对,一般我用的是mysql或者postgres。

我的 table :

CREATE TABLE account (
id CHAR (36) PRIMARY KEY,
username TEXT UNIQUE,
password TEXT NOT NULL,
created INTEGER,
modified INTEGER
);

以及我在其中保存数据的操作:

$account = new Account([
'username' => $username,
'password' => $password
]);
TableRegistry::get('Account')->save($account);

我一直在阅读文档,对于 id 一个 char(36) 应该完成这里提到的工作: http://book.cakephp.org/3.0/en/intro/conventions.html#model-and-database-conventions

最佳答案

createdmodified 字段仅在使用 Timestamp 行为时才会被填充,因此请确保您正在使用它。

另外,为了使 CakePHP 能够正确处理时间字段,您应该使用更具体的日期/时间类型,例如 DATETIME。尽管如此,SQLite 会在内部将它们视为数字列,但 CakePHP 需要这些类型才能将值映射到正确的数据库类型类。

对于你的 id 列,删除 CHAR(36) 之间的空格,SQLite 将返回定义的类型,即空格 CHAR (36),CakePHP 正在寻找 CHAR(36),没有空格。

https://github.com/cakephp/.../blob/3.1.5/src/Database/Schema/SqliteSchema.php#L47

另见

关于php - CakePHP 3 - 保存实体 ID/创建/修改未使用 sqlite 填写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34132684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com