2016-07-20 32 views
1

我想在findFirst中使用IN子句,但它似乎不起作用?是否可以在Phalcon中使用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(); 

回答

2

你可以像這樣的陣列,並在條款約束:

$result = ModelName::findFirst([ 
    'conditions' => 'id in ({cats:array})', 
    'bind' => array('cats' => [3, 5, 8]) 
]); 

注意上面的例子將取得編號爲3的第一條記錄。然而,如果你使用find()方法,你會得到與在docs 3,5和8

更多示例項目(在本部分的底部)。

+1

哇!文檔中的語法在哪裏? – igorsantos07

+0

檢查我的鏈接。它在我上面給出的鏈接的第三個代碼塊中。 –

+1

我敢打賭,它一定是新東西。去年我一直在尋找這樣的解決方案兩次,之前沒有看到過。它看起來也適用於字符串! – Luke

相關問題