Eloquentのアクティブなレコードビルディングを使用して検索クエリを作成したいのですが、LIKE検索になります。 User::find($term)
またはUser::find(1)
を見つけましたが、これはlikeステートメントを生成していません。私は直接的な答えを探しているわけではありませんが、少なくとも誰かが私にそれを調べる方向を教えてくれれば素晴らしいと思います!
次の構文でLIKEを使用してデータベース検索を実行できます。
Model::where('column', 'LIKE', '%value%')->get();
LIKEを頻繁に使用する必要がある場合は、問題を少し単純化できます。 Eloquent ORMを継承するモデルで()のようなカスタムメソッドを作成できます。
public function scopeLike($query, $field, $value){
return $query->where($field, 'LIKE', "%$value%");
}
そのため、この方法を次のように使用できます。
User::like('name', 'Tomas')->get();
参考までに、演算子のリスト(likeおよびその他すべてを含む)はコード内にあります。
/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php
protected $operators = array(
'=', '<', '>', '<=', '>=', '<>', '!=',
'like', 'not like', 'between', 'ilike',
'&', '|', '^', '<<', '>>',
'rlike', 'regexp', 'not regexp',
);
免責事項:
ジョエル・ラーソンの答えは正しいです。私の賛成を得た。
この回答がEloquent ORMを介して利用可能なものにさらに光を当てることを望んでいます(右の直接の人々を指します)。ドキュメントへのリンクはfarの方が優れていますが、そのリンク自体はわかりにくいことが判明しています。
一重引用符の代わりに二重引用符を使用します。例:
where('customer.name', 'LIKE', "%$findcustomer%")
以下は私のコードです:
public function searchCustomer($findcustomer)
{
$customer = DB::table('customer')
->where('customer.name', 'LIKE', "%$findcustomer%")
->orWhere('customer.phone', 'LIKE', "%$findcustomer%")
->get();
return View::make("your view here");
}
私のような二重引用符が気に入らない場合、これは一重引用符で動作します:
$value = Input::get('q');
$books = Book::where('name', 'LIKE', '%' . $value . '%')->limit(25)->get();
return view('pages/search/index', compact('books'));