2016-04-26 12 views
0

どこに配列を渡す:Cakephp3私は、コードのこの作品に取り組んでいる状態

public function validateSelected($array = [1, 2]) 
{ 
    $this->autoRender = false; 
    $samples = TableRegistry::get('Samples'); 
    $samples->query() 
     ->update() 
     ->set(['validate' => true]) 
     ->where(function ($exp, $q) { 
      return $exp->in('id', $q); 
     }) 
     ->execute(); 
} 

コードはかなり自明です、私はANに渡されるidを持つすべての行を更新したいです配列を関数に追加します。

私はこれを行うことにより、コードをテストしてみた:

->where(function ($exp, $q) { 
      return $exp->in('id', [1, 2, 3]); 
     }) 

とその作業罰金をしかし、私はこれに渡された配列パラメータを渡すカントWHERE条件、それは構文エラー宣言されていない変数$配列を与えるよう。

どのように私はこのことを達成することができますかについての任意のアイデアは素晴らしいだろう。

答えて

1

匿名関数に外部変数を含めること

$ids = [1, 2, 3]; 
->where(function ($exp, $q) use($ids) { 
     return $exp->in('id', $ids ]); 
    }) 

use言語構造を使用することができますが、あなたは、単に

->where(['id IN' => $ids]) 

かも

->where(['id' => $ids], ['id' => 'integer[]']) 

を行うことができますmanualを参照してください

+0

ありがとうございました。未知関数の第2パラメータの目的を説明してください。 –

+1

匿名関数の中でいくつかの$ queryメソッドにアクセスする必要があることがあるからです。例については、 – arilia

+0

[この段落](http://book.cakephp.org/3.0/en/orm/query-builder.html#case-statements)を参照してください。応答に感謝します。 –

関連する問題