CakePHP将用户与一个城市关联

CakePHP将用户与一个城市关联,cakephp,associations,has-one,database-relations,Cakephp,Associations,Has One,Database Relations,我有一个用户表和一个城市表,我希望它们相互关联。正如您所猜测的,一个城市可以有多个用户,但一个用户只能链接到一个城市 我真的不知道怎么摆桌子。当我为城市尝试$hasMany relation,为我的用户尝试$hasOne时,我得到了一个错误,因为在我的cities表中找不到client_id字段。我的城市表将被修复:没有人会改变表。我只想在这个表中存储一些关于一个城市的信息 编辑:以下是我的表格和模型(保持简单): 以下是我的模型: // User class Client extends Ap

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

我真的不知道怎么摆桌子。当我为城市尝试$hasMany relation,为我的用户尝试$hasOne时,我得到了一个错误,因为在我的cities表中找不到client_id字段。我的城市表将被修复:没有人会改变表。我只想在这个表中存储一些关于一个城市的信息

编辑:以下是我的表格和模型(保持简单):

以下是我的模型:

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

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

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

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


您的clients表应该包含一个
city\u id
字段,以使其正常工作(只需查看表定义,它已经存在,因此只需更改客户机模型即可使其正常工作)。

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


您的clients表应该包含一个
city\u 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'
     ) ,
  ); 
}

也许这行不通,我们必须指定外键

    // 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'
     ) ,
  ); 
}

你能用模型(用户和城市,如果有的话)和表格的列/名称更新你的问题吗?你有
User
City
表格,但应该有
users
cities
。。。或者更确切地说,
客户
城市
根据我在您的模型中看到的情况,这不是问题。我遵循了CakePHP的命名约定。我的用户模型可以访问数据。但是我不能让“$hasOne city”的东西工作,因为当我设置它时,我得到了这个错误:SQLSTATE[42S22]:列未找到:1054未知列“city.client_id”在“on子句”中,你能用模型(用户和城市,如果你有)更新你的问题吗?你有
User
city
表,但是应该有
用户
城市
。。。或者更确切地说,
客户
城市
根据我在您的模型中看到的情况,这不是问题。我遵循了CakePHP的命名约定。我的用户模型可以访问数据。但是我不能让“$hasOne city”这个东西工作,因为当我设置它时,我得到了这个错误:SQLSTATE[42S22]:Column not found:1054未知Column'city.client_id'in'on子句'这不应该是问题,OP已经正确地使用了CakePHP约定,所以添加ClassName和foreignKey不是不必要的这不应该是问题,OP已经正确地使用了CakePHP约定,因此添加类名和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'
     ) ,
  ); 
}