我有一个节点表(Node
模型)。我希望它与不同的数据类型相关联,但前提是它的字段设置为 1
。
示例:
我的 nodes
表有一个 data_article
字段 (tinyint 1
)。如果该字段为 1,我只希望节点为 $hasMany Article
。
我试过这个:
public $hasMany = array(
'Article' => array(
'conditions' => array('Node.data_articles' => '1')
),
);
但是我得到一个错误:
Column not found: 1054 Unknown column 'Node.data_articles' in 'where clause'
因为协会在自己的查询中查找文章:
SELECT `Article`.`id`, `Article`.`title`, `Article`.`node_id`, ...more fields...
FROM `mydatabase`.`articles` AS `Article`
WHERE `Node`.`data_artiles` = '1'
AND `Article`.`node_id` = ('501991c2-ae30-404a-ae03-2ca44314735d')
显然这不起作用,因为在此查询中根本没有连接节点表。
TLDR:
是否可以基于主模型中的字段进行关联或不关联?如果不是,我还能如何在多个表中保留不同的数据类型,而不必每次都查询它们?
最佳答案
我不认为有一个标准的方法可以用 CakePHP 来做到这一点(至少我想不出一种方法)。绝对可能的是 binding associated models dynamically .
因此,您可以通过将 recursive
参数作为 -1
传递给 find()
方法并基于结果 unbind动态关联的模型。之后你将不得不再次查询,当然。您可能会构建一个 behavior使其可重用。
如果 Cake 可以使用 callback 进行两步查询,那么一个非常优雅的解决方案将是可能的。在查询主模型之后,但在查询关联模型之前,但目前这是不可能的。
编辑:可能有一种非 Cake 方法可以通过包含 IF-statements 的自定义查询更有效地实现这一目标,但我不是这里的 SQL 专家。
关于cakephp - 是否可以根据主模型的数据进行关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11912294/