cakephp - 是否可以根据主模型的数据进行关联?

标签 cakephp database-design associations cakephp-2.1

我有一个节点表(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/

相关文章:

ruby-on-rails - 如何从我 View 中的 Rails habtm 集合对象中提取相关属性值

ruby-on-rails - remove_column 不删除列或在 rails 中给出任何错误

php - 当用户从 CakePHP 的下拉列表中选择时,在表单中填充 <div>

mysql - CakePHP 3 : How to automatically get fields from leftJoin?

mysql - 数据库设计 : Keeping track of tag changes between revisions

mysql - 更好的数据库设计可以在 mysql 中保存大量员工详细信息

mysql - 防止 CakePHP3 全文索引匹配中的 SQL 注入(inject)

cakephp - 如何在控制台/shell 中加载组件

mysql - 如何在 MySQL Workbench 中创建 MUL key ?

ruby-on-rails - 如果我在 Rails 3 中将模型命名为复数,我该怎么办?