[inny][laravel 5.2] Połączone zapytanie |
[inny][laravel 5.2] Połączone zapytanie |
19.05.2018, 23:59:20
Post
#1
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) |
Cześć
W bazie danych w tabeli user mam nazwy 'pl01', 'pl03','pl05' i każda z tych wartości może się równać '0' lub '1' dostarczam do funkcji stringa o konstrukcji np.:
Rozbijam strninga explode I teraz podstawiam sobie w pętli foreach
I teraz jak wiadomo, ładuje mi tylko ostatnią pętlę Jak uzyskać dane gdy 'pl01'=1 OR 'pl05'=1 ? Jak do wyników USER::where dodać 'pl01' z pierwszego rozbicia? Ten post edytował miccom 20.05.2018, 00:04:11 -------------------- Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU! |
|
|
20.05.2018, 00:22:11
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
Zobacz: https://laravel.com/docs/5.2/queries#advanced-where-clauses
P.S. Coś mi się nie podoba Twoja struktura bazy :/ |
|
|
20.05.2018, 07:24:20
Post
#3
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) |
A co mogę w niej zmienić?
A odnośnie zapytań to przestudiowałem to, bardziej chodzi mi o to, jak w kodzie rozwiązać te klauzule where mam tabelę user a w niej rekordy name, email, i 'pl01' do 'pl16' oznaczające województwa, gdzie user zapisuje, w jakich województwach jest obecny. Jak mógłbym to inaczej rozwiązać? Ten post edytował miccom 20.05.2018, 07:27:43 -------------------- Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU! |
|
|
20.05.2018, 07:39:26
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Tabela województwa, tabela użytkownicy i tabela użytkownicy województwa. Relacja wiele do wielu.
-------------------- |
|
|
20.05.2018, 08:41:56
Post
#5
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) |
viking, a za rączkę?
Tworze tabelę o nazwie wojewodztwa i w niej wbijam województwa z ich ID Tworzę tabelę użytkownicy i w niej id usera, email i jego dane Tworzę tabelę użWoj i w niej... No właśnie, co w niej dać? Ten post edytował miccom 20.05.2018, 09:52:12 -------------------- Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU! |
|
|
20.05.2018, 08:46:16
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Id użytkownika oraz id województwa z kluczem głównym na obu kolumnach. Poczytaj trochę o takich powiązaniach.
-------------------- |
|
|
20.05.2018, 10:33:47
Post
#7
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) |
Ściągnąłem mysql Workbech, ale nadal nie wiem jak połączyć tabele tymi kluczami
Przygotowałem sobie diagram, potem export to sql i otrzymałem:
Czy powyższe dobrze wykonałem? Ten post edytował miccom 20.05.2018, 10:53:18 -------------------- Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU! |
|
|
20.05.2018, 10:40:13
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
W tabeli `userWoj` możesz ustawić klucz podstawowy na parę kolumn: `userWoj` i `wojId`. Ale tak jak masz też jest w porządku.
Ogólnie taka struktura bazy, która idzie wszerz przez mnogość opcji, jest w 99% przypadków niewłaściwa i problematyczna. Tym bardziej u Ciebie, gdzie jak się domyślam chodzi tylko o istnienie lub nieistnienie relacji użytkownik-województwo. |
|
|
20.05.2018, 10:44:00
Post
#9
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) |
W tabeli `userWoj` możesz ustawić klucz podstawowy na parę kolumn: `userWoj` i `wojId`. Ale tak jak masz też jest w porządku. Ogólnie taka struktura bazy, która idzie wszerz przez mnogość opcji, jest w 99% przypadków niewłaściwa i problematyczna. Tym bardziej u Ciebie, gdzie jak się domyślam chodzi tylko o istnienie lub nieistnienie relacji użytkownik-województwo. Edytowałem nowe połączenia tabel, czy zaktualizowany plik sql jest ok? -------------------- Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU! |
|
|
20.05.2018, 10:58:50
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
Tak, lepiej. Mógłbyś jeszcze trzymać się jednej konwencji, bo raz masz users, raz woj, razPiszeszTak, a_raz_tak. Indeksy unikalne nadałeś ręcznie? Bo nawet nie wiem czy one w dumpie się osobno pokazują dla klucza podstawowego. Jeśli ręcznie dałeś, to niepotrzebnie, bo klucz podstawowy sam w sobie jest unikalny z definicji.
|
|
|
20.05.2018, 12:07:15
Post
#11
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) |
No tak, właśnie nie wiem czy pisać wielbłądzim czy z podkreślnikami, to samo dotyczy się nazewnictwa, users i woj wiec albo tabele i ich nazwy po polsku albo po angielsku
Niby nic ważnego, ale ułatwia pracę, muszę się nauczyć raz a porządnie co i jak stosować. Indeksy nadałem w workbench ale w większości same były już zaznaczone jako PK, a co do users_has_woj to workbench sam tak ustawił Czyli to będzie dobra architektura bazy?
Ok, więc skleciłem takie zapytanie:
I działa dla users_has_voivodeship.voivodeship_id_voivodeship = 5, ale jak wybrać jeszcze pozostałe które zostały dostarczone stringiem? Ten post edytował miccom 20.05.2018, 12:55:07 -------------------- Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU! |
|
|
21.05.2018, 05:36:55
Post
#12
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Nie jest dobrze bo w ostatniej tabeli nie zdefiniowales kluczy obcych.
-------------------- |
|
|
22.05.2018, 18:51:55
Post
#13
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) |
A jak to stworzyć przy użyciu workbench?
-------------------- Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU! |
|
|
22.05.2018, 19:42:47
Post
#14
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
A google działa? https://dev.mysql.com/doc/workbench/en/wb-f...ationships.html
-------------------- |
|
|
1.06.2018, 18:59:26
Post
#15
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) |
Wpisuję many-to-many, dodaje mi się kolejna tabelka z relacjami, co mam jeszcze dodać? Ponawiam pytanie. Jak wyciągnąć dane przyporządkowane do szukanych id województw? Dostarczam listę id województw w formacie string np. 1|5|9 rozbijam explodem i mam pojedyncze rekordy Jak skonstruować zapytanie- aby wyciągnąć dane gdzie users_has_voivodeship.voivodeship_id_voivodeship = 1 OR users_has_voivodeship.voivodeship_id_voivodeship = 5 OR users_has_voivodeship.voivodeship_id_voivodeship = 9 ? Nikt nie pomoże? Kombinuję coś w ten deseń...
Tylko jak teraz wtłoczyć do tablicy $users kolejne wyniki z następnego województwa? -------------------- Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU! |
|
|
1.06.2018, 19:00:07
Post
#16
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
użycie `whereIn`?
|
|
|
1.06.2018, 19:04:25
Post
#17
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) |
Dziękuję bardzo.
Działa -------------------- Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU! |
|
|
Wersja Lo-Fi | Aktualny czas: 27.04.2024 - 01:54 |