5

私はLaravelの新人です。laravel query builderでwhereクエリを動的にしたい。
通常、phpで動的クエリを作成できます

$where = array(
  'hello' => 'world'
);

function get($where = null){
   if($where == "")  $where = "";
  //Function which converts where clause into queries
  wheretoqueries($where);  //converts where clause
  $sql = "SELECT * FROM $tbl $where";
  return $sql; 
}
echo get($where);

where句がnullの場合、クエリは

SELECT * FROM $tbl

where句がnullでない場合、クエリは

SELECT * FROM $tbl WHERE hello = "world"

キーと値が存在する場合、Laravel orm は where 句で正常に動作します

A::where($where)->get();

where が null の場合、次のメソッドは機能しません

4

2 に答える 2

8

whereクエリを次のように連鎖できます。

$query = Model::query();

if (!empty($value)) {
   $query->where('column', $value);
}

$query->get();

また

whenメソッドを次のように使用できます。

Model::when($value, function ($query) use ($value) {
        return $query->where('column', $value);
    })
    ->get();
于 2016-12-25T16:12:59.307 に答える
0

これを試して。$where 変数に何かが含まれている場合、クエリが実行されます。それ以外の場合は、Aモデルからすべてのデータが取得されます。

 function get($where = null){
     if($where != null){
        A::where('field_name', '=', $where)->first(); 
     }else{
        A::all();
     }
  }

注:クエリが複数の値を返す場合は、クエリ ビルダーの最後で first() の代わりに get() メソッドを使用する必要があります。参照: https://laravel.com/docs/5.3/queries#where-clauses

于 2016-12-25T16:14:33.620 に答える