我有以下2个表,以及从
生成的默认类bin/cake bake all clients
bin/cake bake all clients_address
当我尝试添加地址时,设置" client_id"到1
,我收到以下错误。
Error: SQLSTATE[HY000]: General error: 1364 Field 'client_id' doesn't have a default value
If you are using SQL keywords as table column names, you can enable identifier quoting for your database connection in config/app.php.
SQL Query:
INSERT INTO clients_address (address_line_1, address_line_2, address_line_3, town, county, postcode, email, tel, contact_name, default_address) VALUES (:c0, :c1, :c2, :c3, :c4, :c5, :c6, :c7, :c8, :c9)
是否需要一些额外的代码才能提交client_id?
CREATE TABLE `clients` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `clients_address` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`address_line_1` varchar(30) NOT NULL,
`address_line_2` varchar(30) NOT NULL,
`address_line_3` varchar(30) NOT NULL,
`town` varchar(30) NOT NULL,
`county` varchar(30) NOT NULL,
`postcode` varchar(8) NOT NULL,
`email` varchar(50) NOT NULL,
`tel` varchar(13) NOT NULL,
`contact_name` varchar(40) NOT NULL,
`client_id` int(11) NOT NULL,
`default_address` BOOLEAN NOT NULL DEFAULT 0,
FOREIGN KEY (client_id) REFERENCES clients(id),
PRIMARY KEY (`id`)
);
INSERT INTO `clients` (`id`, `name`) VALUES (1, 'First Client');
答案 0 :(得分:0)
在clients_address
表架构client_id int(11) NOT NULL
中,设置。但是,当您插入地址时,您不会针对client_id设置值,而client_id不能是NULL
client_id
NULL
或设置默认值答案 1 :(得分:0)
你需要确保" client_id"已发送。检查History上的Debug Kit栏,选择POST请求,然后转到Sql log。
必须有这样的查询:
INSERT INTO clients_address (
client_id, address, modified
)
VALUES
(
61, 'my address', "123..."
)
如果没有,表格可能有问题。 您的查询必须是这样的:
INSERT INTO clients_address (address_line_1, ..., contact_name, CLIENT_ID, default_address)
VALUES (:c0, :c1, :c2, :c3, :c4, :c5, :c6, :c7, :c8, :c9)
如果要单独添加地址(地址控制器添加方法),则必须规定" client_id"在Form上手动,或者从基于参数的隐藏字段,使用Cake烘焙它将在添加和编辑方法上列出客户端。
如果您要将客户端表单中的地址添加为关联,那么CakePHP上的文档就是一些很好的示例https://book.cakephp.org/3.0/en/views/helpers/form.html#creating-inputs-for-associated-data