I have current query:
->add('voll', 'Search.Callback', [
'callback' => function($query, $args) {
return $query->matching('Categories', function($q) use ($args) {
if($args['voll'] == 'on'){
$q->andWhere(['Categories.name' => 'Voll']);
}
return $q;
});
}
])
->add('teil', 'Search.Callback', [
'callback' => function($query, $args) {
return $query->matching('Categories', function($q) use ($args) {
if($args['teil'] == 'on'){
$q->where([Categories.name' => 'Teil']);
}
return $q;
});
}
])
generate like:
FROM
postings Postings
INNER JOIN categories_postings CategoriesPostings ON Postings.id = (CategoriesPostings.posting_id)
INNER JOIN categories Categories ON (
Categories.name = 'Voll'
AND Categories.name = 'Teil'
AND Categories.id = (CategoriesPostings.category_id)
)
LEFT JOIN companies Companies ON Companies.id = (Postings.company_id)
LEFT JOIN careerlevels Careerlevels ON Careerlevels.id = (Postings.careerlevel_id)
but need query like:
FROM
postings Postings
INNER JOIN categories_postings CategoriesPostings ON Postings.id = (CategoriesPostings.posting_id)
INNER JOIN categories Categories ON (
(Categories.name = 'Voll' OR Categories.name = 'Teil' )
AND Categories.id = (CategoriesPostings.category_id)
)
LEFT JOIN companies Companies ON Companies.id = (Postings.company_id)
LEFT JOIN careerlevels Careerlevels ON Careerlevels.id = (Postings.careerlevel_id)
short, need to create follow:
(Categories.name = 'Voll' OR Categories.name = 'Teil' ) // <--------------------------------
AND Categories.id = (CategoriesPostings.category_id)
It#s possible?