CakePHP 数据库命名约定

CakePHP Database Naming Convention

我已经阅读了 CAKEPHP 公约。 所以我从错误的约定改为正确的。

但是我仍然不确定我是否正确命名了我的 ID,因为现在我的模型仍然需要使用“$primaryKey”来覆盖删除方法。

Model: EventDate 
Controller: EventDatesController 
Database Table: event_dates
event_dates ID : event_date_id 

其次,在我更改table 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

据我所知,主键的命名约定只是 id。所以你的 event_dates ID 只是 id 而不是 event_date_id.

第二部分: 您将您的 ID 命名为 event_date_id,但在您的 where 子句中寻找 eventdate_id。所以你在那里忘记了 _。如果您将主键更改为 id(见上文),请不要忘记修改您的语句。

Cake 的命名约定使用 id 作为主键。对于外键,使用 _id 前缀为单数 snake cased 相关 table 名称。

因此对于您的 EventDate 模型,您的主键需要是 id

作为外键的示例,如果 EventData 属于 Event 模型,则外键将为 event_id.

在您的示例中,您混淆了主键和外键,即使您尝试覆盖默认值,这也会给您带来各种麻烦。

您可以在文档中阅读更多关于 Cake's naming conventions 的内容。