2017-06-21 13 views
0

私はPHPとLaravelの新機能です。私は頭や尻尾を作ることができないというエロを得ています。Larvavelモデルとパラメータが見つかりませんでした

public function filtered($col, $sort = null, $search = null, $ordering='desc') 
    { 
     $field = $this->table . '.' . $col ; 

     Log::info('BaseModel::filtered->' . $field) ; 

     $data = $this; 
     // check if search variable not empty 
     if ($search != null) 
     { 
      $data = $data->where(function ($query) use ($search){ 
       return $query->where($field,'like','%'.$search.'%') ; 
      }); 

     // check if sort variable not empty 
     if ($sort != null) 
      { 
      $sorts = explode('|', $sort); 

      $data = $data->orderBy($sorts[0],$sorts[1]); 
      } 
     } 
... 

上記のコードは、エラー:Undefined variable: fieldを示しています。私も$this->fieldでフィールド変数を呼び出して試してみた

[2017-06-21 06:32:25] local.INFO: BaseModel::filtered->organisation.name

、また失敗:ログ出力から、私はこれを得ます。 $colパラメータを直接参照すると、同じエラーが発生します。しかし、$search$sortの両方が問題ありません。

+0

は、$ field = ''を宣言しています。残りの部分をしてください – Exprator

+0

私はそれが範囲のものだと推測しています:そのフィールドは 'where {}'ラムダの中では見えません。 – Anthony

答えて

1
$data = $data->where(function ($query) use ($search, $field) { //Add extra parameters inside your use same as search. 
    return $query->where($field,'like','%'.$search.'%') ; 
}); 
+0

ありがとう@ aldrin27。それがそれを解決しました。 – Anthony

+0

問題ありません。あなたはスコープについて正しい。余分なパラメータを追加するだけで、外部変数をクロージャ内で使用できるようになります。 – aldrin27

関連する問題