0
votes

In cakephp, I have Company and Profile model. I would like to establish Company has 0 or 1 Profile relationship. Is it appropriate to use Company hasOne Profile, and Profile belongsTo Company? Is there any implication I need to be aware of? The table's schema is below. Thanks.

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

3 Answers

2
votes

Yes you can use the hasOne/belongsTo Relationship, if a Company has no Profile the sub-array will be empty.

In your profiles table you should use company_id to follow the Cake naming conventions.

0
votes

To follow CakePHP's conventions, the field needs to be company_id, not companies_id.

The foreign key constraint is up to you. I typically don't add them. The unique constraint seems incorrect. This would imply that there can only be one profile per company. Which is not the same as a company can have 0 or 1 profiles.

0
votes

Stick to conventions.

You need to adjust your schema to do that

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)
);

It is company_id as others have mention. And also, ids have to be ints, and autoincremental. It's a pain to have them as chars.