我想根據連接中的多個ID進行選擇,每個ID都應該匹配另一個連接的另一個條件。根據多個條件從連接中選擇主義
我需要獲得「位置」1或2中包含所有「Dichotomies」的「類型」。目前,它給我的結果與傳遞給函數的二分法之一相匹配,但不是全部。
$QB->select("Types","Types,ElementsPositions, Elements, Positions, Dichotomies, Quadras,TypesDescriptions,Relations")
->from($this->get_repository()[0], 'Types');
$QB->leftJoin("Types.ElementsPositions","ElementsPositions", \Doctrine\ORM\Query\Expr\Join::WITH, 'ElementsPositions.Positions = 1 OR ElementsPositions.Positions = 2');
$QB->leftJoin("ElementsPositions.Elements","Elements");
$QB->leftJoin("ElementsPositions.Positions","Positions");
$QB->leftJoin("Elements.Dichotomies","Dichotomies");
$QB->leftJoin("Types.Quadras","Quadras");
$QB->leftJoin("Types.TypesDescriptions","TypesDescriptions");
$QB->leftJoin("Types.Relations","Relations");
if(!empty($where['dichotomies'])){
foreach($where['dichotomies'] as $dichotomy){
$QB->andWhere('Dichotomies.id'.'=:dichotomy');
$QB->setParameter('dichotomy', $dichotomy['id']);
}
}
UPD。 表映射 - 在JSON:
{
"table-name": "types",
"joins":[
{
"table-name":"elements_positions",
"type":"one-to-many"
},
{
"table-name":"quadras",
"type":"many-to-one"
},
{
"table-name":"types_descriptions",
"type":"one-to-one"
},
{
"table-name":"relations",
"type":"many-to-one"
}
]}
元素位置
{
"table-name": "elements_positions",
"joins":[
{
"table-name":"elements",
"type":"many-to-one"
},
{
"table-name":"positions",
"type":"many-to-one"
},
{
"table-name":"types",
"type":"many-to-one"
}
]
}
元素
{
"table-name": "elements",
"joins":[
{
"table-name":"elements_positions",
"type":"one-to-many"
},
{
"table-name":"quadras",
"type":"many-to-many"
},
{
"table-name":"dichotomies",
"type":"many-to-many"
}
]
}
位置
"table-name": "positions",
"joins":[
{
"table-name":"elements_positions",
"type":"one-to-many"
}
]
}
兩分法:
{
"table-name": "dichotomies",
"joins":[
{
"table-name":"elements",
"type":"many-to-many-inversed"
}
]
}
哦,是的,setParameter()每次都是覆蓋它! 但是Dichotomies表是元素的多對多的反面,元素對於ElementsPositions是一對多的,它有三個連接 - 類型,元素和位置。所以一個類型可以在位置1和2有兩個二分法(通過元素),我需要通過提供的二元二分法過濾掉 - 兩者都必須位於位置1或2.這就是爲什麼「和」不是「或」。但這不起作用 - 在發送兩個二分法的情況下,我不會得到任何結果,如果我更改爲「或」,則會得到與兩個二分法相匹配的結果。 –
對不起,但這有點難以理解。你可以編輯你的查詢並提供你想要的原生SQL查詢嗎? – Timurib
我害怕如果我知道它在純SQL中,我將能夠翻譯。我想說什麼,表「類型」可以有多個「類型」的「二分法」和「二分法」有「職位」。我需要檢查「Type」的(2)「Dichotomies」是否在「Positions」1或2中。我在概念上錯誤嗎? –