我在声明我的BTM协会的条件时遇到问题-可能是误会了一些事情。
想象一些表-Notes,NotesEntities,Entities(最后一个不是实际表,但可以是任何表,例如Products,Customers,Service等)
在NotesTable中,有一个“实体”字段,其中包含诸如“服务”,“产品”等值...
我在这样的NotesTable中有一个关联,假设只有在NotesTable中的“实体”字段=“服务”时,它才会从ServicesTable中获取行:
$this->belongsToMany('Services', [
'foreignKey' => 'note_id',
'targetForeignKey' => 'entity_id',
'joinTable' => 'notes_entities',
'conditions' => ['Notes.entity' => 'Services']
]);
但是该条件不起作用,因此如果我要获取一条注释,其中entity =“ Customers”,那么它还将获取Services,其中服务的id =客户的想要的id。例如:我获取一个注释,该注释具有实体=“ Customers”,并以ID [1,2]连接到Customer。很好但是当我包含Services时,它也将获取id为[1,2]的Services,而不是将“ services”数组留空,除非entity =“ Services”。
有没有办法实现这种联系?是否可以在CakePHP 3中设置此类全局条件?我相信我不是唯一可以使用这种东西的人。我想念什么?
编辑1: 另一种解决方法。如果我获取客户并包含Notes,那么一切都很好,并且仅获取实体=“ Customers”的注释。