代码
$query = $this->Client->find()
->hydrate(false)
->limit($limit)
->page($page)
->select(['Client.id','Client.achternaam','Client.Voornaam','clvsstatus.clientopnamestatus_id',
'clstatus.naam','afd.afdeling_naam','clsrtopn.naam'])
->join([
'clvsstatus' => [
'table' => 'client_vs_clientsoortstatus',
'type' => 'INNER',
'conditions' => [
'clvsstatus.client_id = client.id',
'clvsstatus.datum_van <='=>'2016-10-21',
'clvsstatus.datum_tot >='=>'2016-10-21',
**'OR' => ['clvsstatus.datum_tot'=>'0000-00-00']**
],
],
'clstatus' => [
'table' => 'clientsoortstatus',
'type' => 'INNER',
'conditions' => 'clstatus.id = clvsstatus.clientopnamestatus_id',
],
'clvsafdeling' => [
'table' => 'client_vs_afdeling',
'type' => 'INNER',
'conditions' => [
'clvsafdeling.client_id = clvsstatus.client_id',
'clvsafdeling.client_id = clvsstatus.client_id '
],
],
'afd' => [
'table' => 'afdeling',
'type' => 'INNER',
'conditions' => 'afd.afdeling_afdelingid = clvsafdeling.afdeling_id',
],
'clvssrtopn' => [
'table' => 'client_vs_clientsoortopname',
'type' => 'INNER',
'conditions' => 'clvssrtopn.client_id = client.id',
],
'clsrtopn' => [
'table' => 'clientsoortopname',
'type' => 'INNER',
'conditions' => 'clsrtopn.id = clvssrtopn.clientopnamesoort_id',
]
]) ;
结果SQL
SELECT
Client.id AS `Client__id`,
Client.achternaam AS `Client__achternaam`,
Client.Voornaam AS `Client__Voornaam`,
clvsstatus.clientopnamestatus_id AS `clvsstatus__clientopnamestatus_id`,
clstatus.naam AS `clstatus__naam`,
afd.afdeling_naam AS `afd__afdeling_naam`,
clsrtopn.naam AS `clsrtopn__naam`
FROM
client Client
INNER JOIN client_vs_clientsoortstatus clvsstatus ON (
clvsstatus.client_id = client.id
AND clvsstatus.datum_van <= '2016-10-21'
AND clvsstatus.datum_tot >= '2016-10-21'
**AND clvsstatus.datum_tot = '0000-00-00'**
)
INNER JOIN clientsoortstatus clstatus ON clstatus.id = clvsstatus.clientopnamestatus_id
INNER JOIN client_vs_afdeling clvsafdeling ON (
clvsafdeling.client_id = clvsstatus.client_id
AND clvsafdeling.client_id = clvsstatus.client_id
)
INNER JOIN afdeling afd ON afd.afdeling_afdelingid = clvsafdeling.afdeling_id
INNER JOIN client_vs_clientsoortopname clvssrtopn ON clvssrtopn.client_id = client.id
INNER JOIN clientsoortopname clsrtopn ON clsrtopn.id = clvssrtopn.clientopnamesoort_id
LIMIT
15 OFFSET 0
评论: 正如你在上面的代码和结果SQL中看到的,即使明确要求OR条件,蛋糕总是使它成为AND,任何人都可以帮助这个thnxs
答案 0 :(得分:0)
您必须将第一次加入的条件重写为以下内容:
'conditions' => [
'clvsstatus.client_id = client.id',
'OR' => [
'clvsstatus.datum_tot'=>'0000-00-00',
'AND' => [
'clvsstatus.datum_van <='=>'2016-10-21',
'clvsstatus.datum_tot >='=>'2016-10-21',
]
]
]