我想在IN
中使用findFirst
条款,但它似乎不起作用?
预期代码或类似内容:
$item = Item::findFirst([
'conditions' => 'categories IN :cats: AND released < :now:',
'order' => 'id ASC',
'bind' => [
'cats' => $this->categories,
'released' => time()
],
]);
我尝试使用bindTypes
但是没有这样的“列表”或“数组”类型(同样,这会比预期更详细)......
我知道我可以通过查询构建器来完成它,但我希望保持它更具惯用性:
$item = Item::query()
->inWhere('categories', $this->categories)
->andWhere('released < :now:', ['now' => time()])
->orderBy('id ASC')
->limit(1)
->execute()
->getFirst();
答案 0 :(得分:3)
您可以像这样绑定数组和IN子句:
$result = ModelName::findFirst([
'conditions' => 'id in ({cats:array})',
'bind' => array('cats' => [3, 5, 8])
]);
请注意,上面的示例将获得ID为3的第一条记录。但是,如果使用find(),则会获得3,5和8的项目。
docs(本节底部)中的更多示例。