首页 > 解决方案 > CakePHP 3 属于ToMany 条件

问题描述

我在为我的 BTM 关联声明条件时遇到问题 - 可能误解了一些东西。

想象一下几个表——Notes、NotesEntities、Entities(最后一个不是实际的表,但可以是任何表,如 Products、Customers、Services 等......)

在 NotesTable 中有“实体”字段,其中有“服务”、“产品”等值...

我在 NotesTable 中有这样的关联,假设只有在 NotesTable 中的“实体”字段 =“Services”时它才会从 ServicesTable 中获取行:

$this->belongsToMany('Services', [
    'foreignKey' => 'note_id',
    'targetForeignKey' => 'entity_id',
    'joinTable' => 'notes_entities',
    'conditions' => ['Notes.entity' => 'Services']
]);

但是条件不起作用,所以如果我想获取一个注释,其中实体 =“客户”,它也会获取服务,其中服务的 id = 客户的想要的 id。例如:我获取一个具有 entity = "Customers" 并连接到 ID 为 [1, 2] 的客户的注释。这很好用。但是当我包含服务时,它还会获取 ID 为 [1, 2] 的服务,而不是将“服务”数组留空,除非实体 =“服务”。

有没有办法实现这种关联?是否可以在 CakePHP 3 中设置这样的全局条件?我相信我不是唯一一个可以使用这种东西的人。我错过了什么?

编辑1: 相反的方法。如果我获取客户并包含注释,一切都很好,它只获取实体 =“客户”的注释。

标签: cakephpassociationscakephp-3.xmodel-associations

解决方案


推荐阅读