Chcę użyć aktywnego budowania rekordów Eloquent do zbudowania zapytania wyszukiwania, ale będzie to wyszukiwanie LIKE. Znalazłem User::find($term)
lub User::find(1)
, ale to nie jest generowanie podobnej instrukcji. Nie szukam bezpośredniej odpowiedzi, ale jeśli ktoś mógłby mi przynajmniej wskazać kierunek, w którym mam zajrzeć, byłoby świetnie!
93
Odpowiedzi:
Jesteś w stanie znaleźć bazy danych używając LIKE z następującą składnią:
Model::where('column', 'LIKE', '%value%')->get();
źródło
table.field
.Jeśli potrzebujesz często korzystać z LIKE, możesz nieco uprościć problem. W modelu dziedziczącym elokwentny ORM można utworzyć niestandardową metodę, taką jak ():
public function scopeLike($query, $field, $value){ return $query->where($field, 'LIKE', "%$value%"); }
Więc możesz użyć tej metody w taki sposób:
User::like('name', 'Tomas')->get();
źródło
->where()
.FYI, lista operatorów (zawierających podobne i wszystkie inne) jest w kodzie:
/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php protected $operators = array( '=', '<', '>', '<=', '>=', '<>', '!=', 'like', 'not like', 'between', 'ilike', '&', '|', '^', '<<', '>>', 'rlike', 'regexp', 'not regexp', );
zrzeczenie się:
Odpowiedź Joela Larsona jest prawidłowa. Mam moje poparcie.
Mam nadzieję, że ta odpowiedź rzuci więcej światła na to, co jest dostępne za pośrednictwem Eloquent ORM ( wskazuje ludziom właściwe bezpośrednie ). Chociaż odsyłacz do dokumentacji byłby znacznie lepszy, okazał się on nieuchwytny.
źródło
Użyj podwójnych cudzysłowów zamiast pojedynczego cudzysłowu, np .:
where('customer.name', 'LIKE', "%$findcustomer%")
Poniżej mój kod:
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"); }
źródło
Jeśli nie lubisz podwójnych cudzysłowów jak ja, to zadziała z pojedynczymi cudzysłowami:
$value = Input::get('q'); $books = Book::where('name', 'LIKE', '%' . $value . '%')->limit(25)->get(); return view('pages/search/index', compact('books'));
źródło