我读过CAKEPHP公约。 所以我从错误的约定改为右边。
但是我仍然不确定我是否正确命名我的ID,因为现在我的模型仍然需要使用“$ primaryKey”覆盖删除方法。
Model: EventDate
Controller: EventDatesController
Database Table: event_dates
event_dates ID : event_date_id
其次,在我更改表col_id名称后,我的编辑方法查询主键的Where子句仍然是旧的主键名。尝试删除缓存但仍无法正常工作。
SQL Query: SELECT `EventDate`.`event_date_id`, `EventDate`.`event_date`, `EventDate`.`Created`, `EventDate`.`modified` FROM `fyp_seatmanagment`.`event_dates` AS `EventDate` WHERE `EventDate`.`eventdate_id` = '65' LIMIT 1
答案 0 :(得分:4)
据我所知,主键的命名约定只是id
。因此,您的event_dates ID只有id
而不是event_date_id
。
到你的第二部分:
您将自己的ID命名为event_date_id
,但在where子句中查找eventdate_id
。所以你忘记了_
。如果您将主键更改为id
(请参见上文),请不要忘记修改您的主语。
答案 1 :(得分:2)
Cake的命名约定使用id
作为主键。对于外键,使用前缀为奇异蛇形相关表名的_id
。
因此,对于您的EventDate
模型,您的主要密钥必须为id
。
作为外键的示例,如果EventData
属于Event
模型,则外键将为event_id
。
在您的示例中,您已经混淆了主键和外键,即使您尝试覆盖默认值,也会导致各种令人头疼的问题。
您可以在文档中的Cake's naming conventions上阅读更多内容。