CakePHP将用户与一个城市关联



我有一个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'
     ) ,
  ); 
}

相关内容

  • 没有找到相关文章

最新更新