我正在做一个SilverStripe项目。在我的项目中,我需要编写手动/自定义查询。我正在尝试找出在我的查询中设置" where“或”where“”where in“。
这是我当前的代码
$sqlQuery = new SQLSelect();
$sqlQuery->setSelect('Player.*');
$sqlQuery->setFrom('Player');
$sqlQuery->addWhere([ '"Player"."ID"' => 1 ]);
$sqlQuery->addWhere([ '"Player"."ID"' => 2 ]);
$sqlQuery->addWhere([ '"Player"."ID"' => 3 ]);我要做的是选择播放id为1、2或3的记录,但它不起作用,因为它将与AND连接而不是OR连接。如何使用where in或where?
我想过使用setWhereAny。问题是我们不能在PHP中为数组设置相同的数组键,如下所示。
$sqlQuery->setWhereAny([ 'ID' => 1, 'ID' => 2 ])这也不起作用。
$sql->setWhereAny([ 'ID' => 1 ])->setWhereAny([ 'ID' => 2 ]);发布于 2019-12-13 17:25:14
你的“where”应该是这两个中的任何一个;
$aIDs = [1,2,3];
1. $sqlQuery->addWhere(['ID IN (?)'=>implode(',',$aIDs)]);
2. $sqlQuery->addWhere('ID = 1 OR ID = 2 OR ID = 3');addWhere构建SQL查询时,“where”子句位于数组值中,每次使用->addWhere()时,这些值都会被合并。因此,数组键是Table列。
setWhereAny;在您的情况下,这不适用,因为您只有1列要筛选。setWhereAny的正确用法如下所示
$sqlQuery->addWhereAny(array(
'ID' => 1,
'OtherID' => 3
));相应的查询将是
SELECT * FROM Player WHERE ((ID = ?) OR (OtherID = ?))希望这能有所帮助
https://stackoverflow.com/questions/59270996
复制相似问题