В ссылке есть сгенерированный Yii2 запрос от ActiveRecord, он работает в базе данных напрямую. https://pastebin.com/nEvyG1J1
При использовании его с активной записью, похоже, игнорируется второе условие включения. Он возвращает первую запись, которая соответствует ...
([importField].[id] = [importFieldData].[importFieldId])
, когда я ожидаю, что она будет соответствовать обоим условиям
([importField].[id] = [importFieldData].[importFieldId]) AND
([importFieldData].[primaryKeyId] = [importParam].[id])
ниже - это мой активный объект записи, fieldData отношение hasOne
$importParamRecord = ImportParamRecord::find()
->joinWith([
'importType.importFormat.paramFields.fieldData' => function($query) {
$query->andOnCondition(['importFieldData.primaryKeyId' => new
Expression('[importParam].[id]')]);
},
], false, 'JOIN')
->andWhere(['importTypeId' => $request->get('typeId')])
->orderBy(['sortNumber' => SORT_ASC]);