SilverStripe SQLSelect where子句或where或where in

SilverStripe SQLSelect where子句或where或where in,silverstripe,silverstripe-4,Silverstripe,Silverstripe 4,我正在做一个SilverStripe项目。在我的项目中,我需要编写手动/自定义查询。我正试图找出一个要设置的位置或查询中的位置 这是我当前的代码 $sqlQuery = new SQLSelect(); $sqlQuery->setSelect('Player.*'); $sqlQuery->setFrom('Player'); $sqlQuery->addWhere([ '"Player"."ID"' => 1 ]); $sqlQ

我正在做一个SilverStripe项目。在我的项目中,我需要编写手动/自定义查询。我正试图找出一个要设置的位置或查询中的位置

这是我当前的代码

    $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

我想用赛尼。问题是,我们不能在PHP中为数组设置与下面相同的数组键

$sqlQuery->setWhereAny([ 'ID' => 1, 'ID' => 2 ])
这也不起作用

$sql->setWhereAny([ 'ID' => 1 ])->setWhereAny([ 'ID' => 2 ]);

你的“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合并这些值时。因此,数组键是表列

塞特尼;在您的情况下,这是不适用的,因为您只有一列要筛选。setwhereny的正确用法如下

$sqlQuery->addWhereAny(array(
     'ID' => 1,
     'OtherID' => 3
));
并且相应的查询将

SELECT * FROM Player WHERE ((ID = ?) OR (OtherID = ?))

希望这有帮助

$sqlQuery->setwhere['ID'=>1,'ID'=>2]setwhere['ID'=>1]->setwhere['ID'=>2];