96

Eloquentのアクティブレコード構築を使用して検索クエリを作成したいのですが、LIKE検索になります。User::find($term)またはを見つけましたUser::find(1)が、これは同様のステートメントを生成していません。私は直接の答えを探していませんが、誰かが少なくとも私にそれを調べる方向を教えてくれるなら、それは素晴らしいことです!

4

5 に答える 5

242

次の構文でLIKEを使用して、データベース検索を実行できます。

Model::where('column', 'LIKE', '%value%')->get();
于 2012-11-14T20:39:14.407 に答える
65

LIKEを頻繁に使用する必要がある場合は、問題を少し単純化できます。()のようなカスタムメソッドは、EloquentORMを継承するモデルで作成できます。

public  function scopeLike($query, $field, $value){
        return $query->where($field, 'LIKE', "%$value%");
}

したがって、この方法は次のように使用できます。

User::like('name', 'Tomas')->get();
于 2014-10-19T16:54:34.467 に答える
29

参考までに、演算子のリスト(likeおよび他のすべてを含む)はコード内にあります:

/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php

protected $operators = array(
    '=', '<', '>', '<=', '>=', '<>', '!=',
    'like', 'not like', 'between', 'ilike',
    '&', '|', '^', '<<', '>>',
    'rlike', 'regexp', 'not regexp',
);

免責事項:

JoelLarsonの答えは正しいです。私の賛成票を得た。

この回答が、Eloquent ORMを介して利用できるものにさらに光を当てることを望んでいます(人々を正しい方向に向けます)。ドキュメントへのリンクの方がはるかに優れていますが、そのリンク自体はわかりにくいことが証明されています。

于 2014-11-13T06:00:42.033 に答える
18

一重引用符の代わりに二重引用符を使用します。例:

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");
}
于 2014-12-19T02:18:14.333 に答える
3

私のような二重引用符が気に入らない場合は、一重引用符でうまくいきます。

$value = Input::get('q');
$books = Book::where('name', 'LIKE', '%' . $value . '%')->limit(25)->get();

return view('pages/search/index', compact('books'));
于 2017-05-30T21:44:13.763 に答える