Cakephp复合主键

时间:2014-11-19 08:23:29

标签: php cakephp cakephp-2.5

我是Cakephp的新手。请问,我怎么能在cakephp模型中实现这个逻辑,知道cake不接受复合键。

我有3张桌子。

CREATE TABLE satelites(
    id INTEGER PRIMARY KEY,
    name TEXT,
    location TEXT);

CREATE TABLE sensors (
    satelite_id INTEGER, 
    type VARCHAR(100),
    unitofmeasurement TEXT,
    PRIMARY KEY(satelite_id,type),
    CONSTRAINT satelite_id FOREIGN KEY(satelite_id) 
        REFERENCES satelites(id) ON DELETE CASCADE
);

CREATE TABLE sensordatas(
    id INTEGER PRIMARY KEY AUTO_INCREMENT,
    satelite_id INTEGER, 
    sensortype VARCHAR(100), 
    value REAL,
    valuetext INTEGER, 
    timestamp TIMESTAMP NOT NULL,
    FOREIGN KEY(satelite_id,sensortype) 
       REFERENCES sensors(satelite_id,type)
);
  • 卫星有许多传感器
  • 传感器属于卫星
  • 传感器有许多传感器数据
  • sensordatas属于传感器

2 个答案:

答案 0 :(得分:0)

如果我理解你,你必须重做你的表模式以使用所有CakePHP功能。

通过表格获得1个主键是一个很好的实践(对于cakephp,但对于所有表格而言)

所以 传感器必须有id

和sensordatas:sensor_id

并且在简单的感觉数据属于传感器之后。

答案 1 :(得分:0)

http://book.cakephp.org/3.0/en/quickstart.html#creating-the-database

CakePHP 3现在支持复合键用于任何目的,因为这些对记录访问没有帮助。因此,我们必须在所有表格中加入 id 主键以供选择和更新。