cakephp模型有0或1个关系

时间:2013-07-25 20:25:45

标签: mysql cakephp

在cakephp中,我有公司和个人资料模型。我想建立公司有0或1个配置文件的关系。是否适合使用公司hasOne Profile,以及Profile belongsTo Company?我需要注意哪些含义?表的架构如下。感谢。

create table companies (
  id char(36) NOT NULL,
  type int(10) NOT NULL,
  primary key (id)
);
create table profiles (
  id char(36) NOT NULL,
  company_id char(36) NOT NULL,
  provider_contact varchar(255) NULL,
  primary key (id),
  unique key (company_id),
  foreign key (company_id) references companies(id)
);

3 个答案:

答案 0 :(得分:2)

是的,您可以使用hasOne / belongsTo关系,如果公司没有配置文件,则子数组将为空。

在个人资料表中,您应该使用company_id来遵循Cake命名约定。

答案 1 :(得分:0)

要关注CakePHP's conventions,字段必须为company_id,而不是companies_id

外键约束取决于您。我通常不添加它们。唯一约束似乎不正确。这意味着每个公司只能有一个配置文件。这与公司可以拥有0或1个配置文件不同。

答案 2 :(得分:0)

坚持惯例。

您需要调整架构才能执行此操作

create table companies (
  id int(11) NOT NULL,
  type int(11) NOT NULL,
  primary key (id)
);

create table profiles (
  id int(11) NOT NULL,
  company_id int(11) NOT NULL,
  provider_contact varchar(255) NULL,
  primary key (id),
  unique key (company_id),
  foreign key (company_id) references companies(id)
);

其他人提到的是company_id。而且,ids必须是整体的,并且是自动增量的。将它们作为字符是一种痛苦。