[inny]Pomoc w wyszukiwarce, Laravel |
[inny]Pomoc w wyszukiwarce, Laravel |
7.08.2019, 19:38:51
Post
#1
|
|
Grupa: Zarejestrowani Postów: 680 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) |
Panowie dopiero rozpoczynam przygodę z Laravel no i chciałbym się dowiedzieć jak rozbudować wyszukiwarkę ( na razie wyszukuje po miejscowości )
Chciałbym w wyszukiwarce mieć miejscowość (to już jest) oraz stanowisko lub branże , które należy wyciągać z tabel : position_groups ( id, name) 1 , pracownik fizyczny --- positions ( id, position_group_id, name ) 1, 1 , malarz --- jobs ( id, name, user_id, city_id, position_id, position_group_id ) 1, Poszukiwany na już malarz, 1, 1, 1, 1 kod w pliku FrontendRepository.php
kod z pliku City.php
oraz kod z pliku JobOffer.php
Czyli wpisując w input np malarz przeszuka mi w tabeli jobs z kolumny name name like wpisany% lub jeżeli ktoś wpiszę pracownik fizyczny to znajdzie to z tabeli position_groups lub z tabeli positions z kolumny name. |
|
|
8.08.2019, 12:26:07
Post
#2
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 32 Dołączył: 10.03.2004 Ostrzeżenie: (10%) |
Chyba tak bym to zrobił... |
|
|
8.08.2019, 19:06:55
Post
#3
|
|
Grupa: Zarejestrowani Postów: 680 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) |
@Lord ale ten kod ma się nijak do mojego zapytania / kodu
|
|
|
9.08.2019, 15:44:58
Post
#4
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 32 Dołączył: 10.03.2004 Ostrzeżenie: (10%) |
|
|
|
15.08.2019, 21:40:15
Post
#5
|
|
Grupa: Zarejestrowani Postów: 680 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) |
Napisze zatem raz jeszcze są 4 tabele:
city (id, name) 1, Warszawa 2, Wrocław 3, Zakopane position_groups ( id, name) 1 , pracownik fizyczny --- positions ( id, position_group_id, name ) 1, 1 , malarz --- jobs ( id, name, user_id, city_id, position_id, position_group_id ) 1, Poszukiwany na już malarz, 1, 1, 1, 1 następnie jest formularz gdzie user wpisuje miejscowość i słowo kluczowe (branża, stanowisko) - te słowo powinno pobierać albo z tabeli jobs z kolumny name, lub z tabeli positions z pola name lub z tabeli positions_groups z pola name. na chwilę obecną mam kod:
powyższy kod tylko na chwilę obecna szuka tylko po miejscowości. Rozumiem, że chyba do funkcji getSearchResults powinienem przekazywać drugą wartość z formularza ? czyli coś na styl getSearchResults( string $city, string $input ) ? no i najważniejsze co powinienem zwracać w samej funkcji ? |
|
|
23.08.2019, 07:42:48
Post
#6
|
|
Grupa: Zarejestrowani Postów: 873 Pomógł: 25 Dołączył: 24.07.2005 Ostrzeżenie: (0%) |
1. jobs ( id, name, user_id, city_id, position_id, position_group_id ) ... ostatnie pole jest zbędne, masz position_id
2. Oczywiście, że przekazać ... a jak 3. Szukasz tylko po dwóch polach to możesz po prostu poszukać "po TYM polu" LUB "po INNYM polu" ___ szukaj pod "laravel orWhere", np. tu Przemyśl czy za chwile nie zachce Ci się szukać po większej ilości bo wtedy ten pomysł "osłabnie" Wtedy są inne schematy działania... |
|
|
24.08.2019, 14:41:54
Post
#7
|
|
Grupa: Zarejestrowani Postów: 680 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) |
@john_doe
ad 1. position_id, position_group_id to tak jak by dwie różne tabele : position_groups (to jest tak jakby grupa zawodowa) - np pracownik fizyczny. Natomiast tabela positions zawiera już konkretne zawody np malarz, kafelkarz itd. W input user może tak naprawdę wpisać "pracownik fizyczny" jak i "malarz", ale też powinno przeszukasz pole "name" w tabeli jobs. ad 2. próbuje rozgryźć przekazanie tak jakby drugiego inputa ale otrzymuje błąd: "Type error: Argument 2 passed to FrontendRepository::getSearchResults() must be of the type string, none given, called in
oba pola są w tej samej tabeli "jobs". Im bardziej brnę w laravela to coraz bardziej wydaje się trudniejszy. |
|
|
24.08.2019, 15:49:25
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Poczytaj https://laravel.com/docs/5.8/eloquent-relat...ing-eager-loads
Zastanów się nad stosowaniem ->when(). -------------------- |
|
|
24.08.2019, 18:49:00
Post
#9
|
|
Grupa: Zarejestrowani Postów: 680 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) |
@viking no ok coś tam zaczynam jarzyć ale powiedz mi , a raczej proszę napisz mi w jaki sposób mam się odwołać do innej tabeli:
skoro nie chcę mi działać przekazanie drugiej wartości w funkcji getSearchResults() , to poszedłem na skróty i :
jak się można domyślać zwróci błąd: Column not found: 1054 Unknown column 'description' in 'where clause' (SQL: select * from `cities` where `name` = Warszawa and `description` LIKE %malarz% limit 1 |
|
|
24.08.2019, 19:15:24
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
A jak wywołujesz funkcję skoro nie działa? W lv trzeba uważać na sql injection przy like a to co zrobiłeś to już maksymalna dziura.
-------------------- |
|
|
24.08.2019, 19:56:33
Post
#11
|
|
Grupa: Zarejestrowani Postów: 680 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) |
|
|
|
24.08.2019, 20:52:12
Post
#12
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Przecież przekazujesz obiekt Request a wymagasz 2 stringów.
-------------------- |
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 04:24 |