我有以下情况:
目的地 belongsToMany 属性
// DestinationsTable.php
$this->belongsToMany('Attributes', [
'foreignKey' => 'destination_id',
'targetForeignKey' => 'attribute_id',
'joinTable' => 'destinations_attributes'
]);
// AttributesTable.php
$this->belongsToMany('Destinations', [
'foreignKey' => 'attribute_id',
'targetForeignKey' => 'destination_id',
'joinTable' => 'destinations_attributes'
]);
现在我想检索所有具有(多个)属性选择的目的地 我想,这不应该是非常困难的。看起来我不明白......
我尝试了以下操作,但它导致检索到至少具有一个所需属性的所有目标。但是我希望在选择越来越多的属性后减少结果
$attribute_ids = [104, 117];
$query = $this->Destinations->find();
$query->matching('Attributes', function(\Cake\ORM\Query $q) use ($attribute_ids) {
return $q->where(['Attributes.id IN' => $attribute_ids]);
});
有时候看到前端会更容易理解。这两个属性包含Attributes.id
104
和117
。
感谢您的帮助!