如何根據多個「標識符」從db表中選擇行?SilverStripe db select多個鍵匹配
單鍵匹配
$id = 42;
DataObject::get('Foo')->where("ID = '$id'");
多個密鑰匹配
$id = array(42, 43, 44);
DataObject::get('Foo')->where(???);
在第二種情況下,它應該返回有一個ID的行的列表42,43或44
如何根據多個「標識符」從db表中選擇行?SilverStripe db select多個鍵匹配
單鍵匹配
$id = 42;
DataObject::get('Foo')->where("ID = '$id'");
多個密鑰匹配
$id = array(42, 43, 44);
DataObject::get('Foo')->where(???);
在第二種情況下,它應該返回有一個ID的行的列表42,43或44
SilverStripe ORM知道如何建立where in
查詢:
$ids = array(42, 43, 44);
$items = Foo::get()->byIDs($ids);
對於你應該使用DataList::filter()
方法的任何其他組;
$products = Product::get()->filter('Category', array('shirts', 'shoes'));
這似乎工作:
$id = implode(',', array(42, 43, 44));
$items = DataObject::get('Foo')->where("ID IN ($id)");
不熟悉SilverStripe,但也許SQL的'IN'運算符會讓您朝着正確的方向發展。 – markusthoemmes