Php 从不同模型到同一表的多个关系
我希望有一个简单的、可重用的方法来共享与具有不同模型的特定表的关系。我想做的是可以指定一个表,带有外键列,如“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 我希望上面的解释有道理,提前谢谢 是的 创建关系时,还可以设置条件 例如,在一个应用程序中,您有许多可以注释的模型,因此它们都与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 我希望上面的解释有道理,提前谢谢 是的 创建关系时
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你的问题有点泛化。。。你到底想要实现什么?