我有一个User表和一个城市表,我想将它们相互关联。如您所料,一个城市可以有多个用户,但一个用户只能链接到一个城市。
我真的不知道怎么摆桌子。当我尝试$hasMany关系为城市和$hasOne为我的用户,然后我得到一个错误,因为client_id字段不能在我的城市表中找到。我的城市表将是固定的:没有人会改变表。我只想在这个表中存储一个城市的一些信息。
编辑:这是我的表和我的模型(保持简单):
clients { id, firstname, lastname, city_id }
cities { id, name, some_other_data }
这些是我的模型:
// User
class Client extends AppModel {
public $hasOne = array(
'City'
);
}
// City
class City extends AppModel {
public $useTable = 'cities';
public $hasMany = array(
'Client'
);
}
你需要反转关系;客户"属于"一个城市。(我知道,这个听起来不合逻辑);
// User
class Client extends AppModel {
public $belongsTo = array(
'City'
);
}
// City
class City extends AppModel {
public $useTable = 'cities';
public $hasMany = array(
'Client'
);
}
您的客户端表应该包含一个city_id
字段以使其正常工作(仅查看您的表定义,它已经存在,因此只需更改客户端模型应该使其为您工作)。
可能行不通,我们必须指定foreignkey
// User
class Client extends AppModel {
public $belongsTo = array(
'City'=> array(
'className' => 'City',
'foreignKey' => 'city_id'
) ,
);
}
// City
class City extends AppModel {
public $useTable = 'cities';
public $hasMany = array(
'Client' => array(
'className' => 'Client',
'foreignKey' => 'city_id'
) ,
);
}