Wpis z mikrobloga

Jakiś pomocny Mirek wie o co chodzi?
Mam coś takiego:

$samochody = DB::table('Samochod')
->whereIn('wyposazenie', ['kierownica', 'skrzynia'])
->get();
dd($samochody);

Chce wyszukać samochody, po kolumnie wyposazenie gdzie zawierają się te rzeczy. Mam w tabeli wiele samochodów które to posiadają XDD Ale zwraca mi zawsze tylko jeden, i bierze pod uwagę tylko kierownica tak jakby. Chce zrobić wyszukiwarkę. Mam input i wpisuje w niego kilka slow po przecinku. Muszę jeszcze zrobić jakąś pętle? Czy wgl robię to źle?

#php #programowanie
#laravel
  • 18
@asdfghjkl: Z małej, z palca to pisałem przed chwilą i pewnie się zagapiłem. Ale w kodzie mam poprawnie. Bardziej chodzi mi o rozwiazanie tego problemu co opisałem
@Rakky: no nie doczytałem. No tak jak wpiszesz kilka słów po przecinku to potem robisz explode() i zaleznie od tego co masz zamiar szukać budujesz zapytanie. Zaleznie od tego w jaki sposób masz zamiar to szukac podejście może byc inne. W sensie czy szukasz samochdów które zawierają wszystkie lub jakikolwiek z szukanych
@asdfghjkl: Dam przyklad:
Masz 3 koszyki owoców.
1 - jabłko, gruszka, pomarańcza
2 - gruszka,banan
3 - cytryna, banan

Wpisuje: cytryna, banan

I Powinno mi wyszukac koszyk 2 i 3, ponieważ zawierają ten owoc. Nie umiem tego osiagnąć, wiem że whereIn niby do tego jest ale nie działa mi to tak jakbym chciał
@asdfghjkl: Udało się! Cały główny problem polegał na tym że używałem whereIn zamiast orWhere. A jest kolumną zawierającą string, w którym każdy element jest oddzielony przecinkiem. Chyba że jest jakieś lepsze rozwiazanie do tego?
A jest kolumną zawierającą string, w którym każdy element jest oddzielony przecinkiem.


@Rakky: zmień to bracie na relacje. Trzymanie tego w taki sposób jest złym pomysłem i na dłuższą metę jest mało efektywne.