0

我有一个用户表和一个城市表,我想将它们相互关联。正如您所猜测的,一个城市可以有多个用户,但一个用户只能链接到一个城市。

我真的不知道如何设置我的桌子。当我为 City 尝试 $hasMany 关系并为我的 User 尝试 $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'
    );
}
4

2 回答 2

2

您需要反转关系;客户“属于”一个城市。(我知道,这听起来不合逻辑);

// User
class Client extends AppModel {
    public $belongsTo = array(
        'City'
    );
}

// City
class City extends AppModel {
    public $useTable = 'cities';

    public $hasMany = array(
        'Client'
    );
}

您的 clients-table 应该包含一个city_id字段以使其正常工作(只需查看您的 table-definition 并且它已经存在,因此只需更改 Client-model 就应该使其适合您)。

于 2013-04-19T23:54:11.567 回答
1

可能它不起作用我们必须指定外键

    // 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'
     ) ,
  ); 
}
于 2013-04-20T04:29:26.767 回答