如何在 Silverstripe 4 中使用 IN 子句编写查询 WHERE

How to write query WHERE with IN Clause in Silverstripe 4

如何在 SilverStripe 中编写以下查询以获取特定列数据。

SELECT Title FROM Devmac_Object_ProductType WHERE ID IN ($strProductListID)

假设 Devmac_Object_ProductType 是代表 Devmac\Object\ProductType DataObject 的 table,而 $strProductListID 是 ID 平面数组:

use Devmac\Object\ProductType;

$strProductListID = [1,2,7];

$filteredProductTitles = ProductType::get()->filter('ID', $strProductListID)->column('Title');

您还可以使用 map('ID', 'Title') 获取 ID 到标题的映射:

$filteredProductTitles = ProductType::get()->filter('ID', $strProductListID)->map('ID', 'Title');

这将return一个Map,可以使用->toArray()转换为关联数组。

请参阅 Managing Lists 上的开发人员文档。