tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

Kombinace and a or operatoru

před 2 lety

ali
Člen | 202
+
0
-

Ahoj,

resim takovy delikatni problem, s kterym si nevim rady

mam dve pole s where podminkami

$filter[] = [["[first_app_user_id]>%i",0],["[reason]=%i",6]];
$filter[] = [["[first_app_user_id]>%i",0],["[from_1] IN (%i)",[1,2,3,4,5,6]]];

pole si posilam do metody, kde je pridam k datasource

public function ticketsDataSource($where=[])
{
  $dataSource = $this->db->dataSource("SELECT * FROM [table] ORDER BY [date] DESC");

  forEach($where as $conditions)
  {
    $dataSource->where("%and",$conditions);
  }

  return $dataSource;
}

Kdyz pouziju modifikator %and, tak se mi to prevede na cond11 AND cond12 AND cond21 AND cond22
Kdyz pouziji modifikator (%and) tak se to prevede na (cond11 AND cond12) AND (cond21 AND cond22)
Kdyz pouziji modifikator %or tak se mi to prevede na (cond11 OR cond12) AND (cond21 OR cond22)

ale nenapada me, co udelat proto, aby podminka vypadala takto (cond11 AND cond12) OR (cond21 AND cond22)

před 2 lety

Milo
Moderator | 1035
+
0
-

Zkus takhle:

$or = [];
foreach ($filter as $fil) {
    $or[] = ['%and', $fil];
}
$dataSource->where('%or', $or);

před 2 lety

ali
Člen | 202
+
0
-

Perfect, diky moc funguje!