2016-07-20 10 views
1

IN句をfindFirstに使用したいのですが、うまくいきませんか?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

あなたはこのような配列とIN句をバインドすることができます:

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

上記の例では、検索()を使用する場合は、(docsで3,5および8

詳細な例でアイテムを取得するが、ID 3との最初のレコードを取得することに注意してくださいこのセクションの最後にあります)。

+1

whoa!ドキュメントのその構文はどこですか? – igorsantos07

+0

私のリンクをチェックしてください。そのリンクからの3番目のコードブロックの上にあなたを与えました。 –

+1

私はそれが何か新しいものでなければならないと確信しています。私は去年2度のような解決策を探していましたが、以前はそれを見ていませんでした。それは文字列でも動作するように見えます! – Luke

関連する問題