Php 从不同模型到同一表的多个关系

Php 从不同模型到同一表的多个关系,php,database,cakephp,Php,Database,Cakephp,我希望有一个简单的、可重用的方法来共享与具有不同模型的特定表的关系。我想做的是可以指定一个表,带有外键列,如“parent_id”,然后将此表/模型与我的应用程序中的几个模型关联。有没有一种方法可以做到这一点,哪一种是最好的方法?我想我需要在该表中增加一列,以指定每行链接到的表,例如: 表1 id 0 1 2 名称名称0名称1名称2 表2 id 0 1 2 名称名称0名称1名称2 通用表格: id 0 1 ... 父\u id 0 表1表2 我希望上面的解释有道理,提前谢谢 是的 创建关系时

我希望有一个简单的、可重用的方法来共享与具有不同模型的特定表的关系。我想做的是可以指定一个表,带有外键列,如“parent_id”,然后将此表/模型与我的应用程序中的几个模型关联。有没有一种方法可以做到这一点,哪一种是最好的方法?我想我需要在该表中增加一列,以指定每行链接到的表,例如:

表1

id 0 1 2 名称名称0名称1名称2

表2

id 0 1 2 名称名称0名称1名称2

通用表格:

id 0 1 ... 父\u id 0 表1表2

我希望上面的解释有道理,提前谢谢

是的

创建关系时,还可以设置条件

例如,在一个应用程序中,您有许多可以注释的模型,因此它们都与
Comment
Model有很多关系

您可以在comments表中创建一列,存储被注释模型的名称,并创建一列
parent\u id
存储该id

因此,注释表通常类似于

id | parent_id | model_name | comment_text         | user_id
---+-----------+------------+----------------------+-------
1  | 15        | Post       | I like this Post     | 3
1  | 15        | Post       | I like this Post too | 5
2  | 19        | Receipt    | This receipt is good | 3
在您的
Post
模型中,您可以

public hasMany =array(
    'Comment' => array(
        'foreignKey' => 'parent_id',
        'conditions' => array('Comment.model_name' => 'Post')
    )
public hasMany =array(
    'Comment' => array(
        'foreignKey' => 'parent_id',
        'conditions' => array('Comment.model_name' => 'Receipt')
    )
在您的
收据
模型中,您可以执行以下操作

public hasMany =array(
    'Comment' => array(
        'foreignKey' => 'parent_id',
        'conditions' => array('Comment.model_name' => 'Post')
    )
public hasMany =array(
    'Comment' => array(
        'foreignKey' => 'parent_id',
        'conditions' => array('Comment.model_name' => 'Receipt')
    )

等等

似乎很有希望。。。有没有一种方法可以自动获取链接父对象的所有注释、保存等?我想我应该使用行为?是的,行为可能是正确的选择。但是在我上面的代码中,当你做一些类似于
$this->Post->find('first',…)
的事情时,你会得到一个贴子,上面有他所有的评论。关于如何在行为中做到这一点的任何提示?@cpl你的问题有点泛化。。。你到底想要实现什么?