SilverStripe db选择多个键匹配

时间:2016-10-09 11:59:31

标签: php silverstripe

如何根据多个“标识符”从db表中选择行?

单键匹配

$id = 42;
DataObject::get('Foo')->where("ID = '$id'");

多个匹配项

$id = array(42, 43, 44);
DataObject::get('Foo')->where( ??? );

在第二种情况下,它应该返回ID为42,43或44的行列表。

2 个答案:

答案 0 :(得分:3)

SilverStripe ORM知道如何构建where in个查询:

$ids = array(42, 43, 44);
$items = Foo::get()->byIDs($ids);

对于任何其他套装,您应该使用DataList::filter()方法;

$products = Product::get()->filter('Category', array('shirts', 'shoes'));

答案 1 :(得分:0)

这似乎有效:

$id = implode(',', array(42, 43, 44));

$items = DataObject::get('Foo')->where("ID IN ($id)");