BelongTomany关联的CakePHP自定义查找程序
对于与CakePHP 3.x的belongTomany关联,我无法从联接表上的行为应用自定义查找程序 我的主要模型BelongTomany关联的CakePHP自定义查找程序,cakephp,cakephp-3.0,Cakephp,Cakephp 3.0,对于与CakePHP 3.x的belongTomany关联,我无法从联接表上的行为应用自定义查找程序 我的主要模型Assessment可能有许多无法完成的原因,我使用muffin/trash行为在联接表AssessmentUtcReasons上提供软删除支持 $this->belongsToMany('UnableToCompleteReasons', [ 'joinTable' => 'AssessmentUtcReasons', 'fore
Assessment
可能有许多无法完成的原因
,我使用muffin/trash
行为在联接表AssessmentUtcReasons
上提供软删除支持
$this->belongsToMany('UnableToCompleteReasons', [
'joinTable' => 'AssessmentUtcReasons',
'foreignKey' => 'AssessmentLogId',
'targetForeignKey' => 'UtcReasonId',
'through' => 'AssessmentUtcReasons',
'saveStrategy' => 'replace',
]);
从技术上讲,协会在这里运作良好。已删除的无法完成原因
关联不会像您预期的那样返回到评估
模型
我的问题是,我还必须返回已删除的记录,包括所有连接数据,我无法从我的AssessmentUtcReasons
表对象上的muffin/trash
行为中使用withTrashed
查找器
当我使用我的full
finder时,我想将withTrashed
finder应用于联接表-因为unabletocompleteReasions
表不使用软删除
以下是我的基本目标:
public function findFull(Query $query, $options)
{
return $query->contain([
'UnableToCompleteReasons' => function ($q) {
// These finders should be on the JOIN table
return $q->find('withTrashed')->find('ordered');
},
]);
}
}
我已经尝试了所有我能想到的方法,比如在关联上使用finder
选项,但似乎所有方法都只适用于另一个表,而不适用于联接表
我在文档中也找不到这方面的任何内容,因此如果我遗漏了什么,请原谅。谢谢 我认为您会发现自己或者创建与联接表的具体关联,即
评估有许多assessmentutcreason
关联,因此您可以直接包含联接表关联,如:
$query->contain([
'AssessmentUtcReasons' => function ($q) {
return $q
->find('withTrashed')
->find('ordered')
->contain('UnableToCompleteReasons');
},
]);
或者,如果适用,将行为/查找程序移动到
UnableToCompleteReasons
表类中。这似乎是唯一优雅的方法。谢谢