【问题标题】:CakePHP Association is not working with userdata to userdatatypeCakePHP 协会不使用 userdata 到 userdatatype
【发布时间】:2015-02-21 10:58:16
【问题描述】:

我目前正在开发一个包含一些用户数据的 web 应用程序。我有以下表格:

users - 包含基本的用户数据。 userdata - 包含大量关于用户的不同信息。 userdatatype - 包含不同用户数据的定义。

在 CakePHP 中,我在用户模型中使用 hasMany 关联来检索用户数据信息(工作正常),在用户数据模型中,我想使用 hasOne 关联来检索相应的用户数据类型信息。但这不起作用,因为 userdatatype 显然没有 userdata_id,因为它是 userdata 的定义。

我尝试在 hasOne 关联中将 foreignKey 设置为 false 并使用条件 'Userdatatype.id => ??' 但我不知道如何访问该实例。我如何将这些模型链接在一起而不会在我的代码中产生太多开销? 我真的需要遍历 userdata 数组并手动建立连接吗?

public $hasOne = array(
    'Userdatatype' => array(
        'className' => 'Userdatatype',
        'foreignkey' => false,
        'conditions' => array('Userdatatype.id' = WHAT DO I SET HERE?)
    )
);

【问题讨论】:

  • 你为什么不遵循 cakePHP 的命名约定和你自己的约定? Lemme 告诉您,随着您的项目越来越大,您将花费Most 时间来做补丁,就像您根据问题在代码中所做的那样。请阅读 Cakephp 自己提供的书,有趣的是它是免费的,book.cakephp.org/2.0/en/index.html..
  • 你再次部分回答了你自己的问题,userdatatype obviously has no userdata_id as it is the definition for the userdata,然后在 userdatatype 表中有 userdata_id。

标签: php cakephp


【解决方案1】:
Tables: users, userdatas, userdatatypes.

users -> id, email, name etc.
userdatas -> id, user_id, data1, data2, data3 etc.
userdatatypes -> id, userdata_id, type

**Model User.php :** 

    public $hasMany = array('Userdata');

**Model Userdata.php :**

    public $belongsTo = array('User');
    public $hasOne = array('Userdatatype');

**Model Userdatatype.php :**

    public $belongsTo = array('Userdata');

如果我正确理解问题,这应该将您的模型链接在一起。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多