Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [inny][laravel 5.2] Połączone zapytanie
miccom
post
Post #1





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Cześć (IMG:style_emoticons/default/smile.gif)
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.:
  1. $string = 01|05

Rozbijam strninga explode
I teraz podstawiam sobie w pętli foreach
  1. foreach ($wojewodztwa as &$value) {
  2. $wynik = User::where('pl'.$value,'=',1)->get();
  3. }


I teraz jak wiadomo, ładuje mi tylko ostatnią pętlę (IMG:style_emoticons/default/smile.gif)
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
miccom
post
Post #2





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 (IMG:style_emoticons/default/wink.gif) wiec albo tabele i ich nazwy po polsku albo po angielsku (IMG:style_emoticons/default/smile.gif)

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ł (IMG:style_emoticons/default/smile.gif)

Czyli to będzie dobra architektura bazy?


  1. -- MySQL Script generated by MySQL Workbench
  2. -- Sun May 20 12:37:39 2018
  3. -- Model: New Model Version: 1.0
  4. -- MySQL Workbench Forward Engineering
  5.  
  6. SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
  7. SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
  8. SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
  9.  
  10. -- -----------------------------------------------------
  11. -- Schema mydb
  12. -- -----------------------------------------------------
  13. DROP SCHEMA IF EXISTS `mydb` ;
  14.  
  15. -- -----------------------------------------------------
  16. -- Schema mydb
  17. -- -----------------------------------------------------
  18. CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
  19. SHOW WARNINGS;
  20. USE `mydb` ;
  21.  
  22. -- -----------------------------------------------------
  23. -- Table `users`
  24. -- -----------------------------------------------------
  25. DROP TABLE IF EXISTS `users` ;
  26.  
  27. SHOW WARNINGS;
  28. CREATE TABLE IF NOT EXISTS `users` (
  29. `id` INT NOT NULL,
  30. `email` VARCHAR(255) NULL,
  31. `name` VARCHAR(255) NULL,
  32. `account` INT NULL COMMENT '1: użytkownik, 2:zespół / DJ',
  33. `password` VARCHAR(255) NOT NULL,
  34. `remember_token` VARCHAR(100) NULL,
  35. `created_at` TIMESTAMP(100) NULL DEFAULT NULL,
  36. `updated_at` TIMESTAMP(100) NULL DEFAULT NULL,
  37. `confCode` VARCHAR(255) NULL,
  38. PRIMARY KEY (`id`))
  39. ENGINE = InnoDB;
  40.  
  41. SHOW WARNINGS;
  42. CREATE UNIQUE INDEX `id_UNIQUE` ON `users` (`id` ASC);
  43.  
  44. SHOW WARNINGS;
  45.  
  46. -- -----------------------------------------------------
  47. -- Table `voivodeship`
  48. -- -----------------------------------------------------
  49. DROP TABLE IF EXISTS `voivodeship` ;
  50.  
  51. SHOW WARNINGS;
  52. CREATE TABLE IF NOT EXISTS `voivodeship` (
  53. `id_voivodeship` INT NOT NULL,
  54. `name` VARCHAR(255) NULL,
  55. PRIMARY KEY (`id_voivodeship`))
  56. ENGINE = InnoDB;
  57.  
  58. SHOW WARNINGS;
  59.  
  60. -- -----------------------------------------------------
  61. -- Table `users_has_voivodship`
  62. -- -----------------------------------------------------
  63. DROP TABLE IF EXISTS `users_has_voivodship` ;
  64.  
  65. SHOW WARNINGS;
  66. CREATE TABLE IF NOT EXISTS `users_has_voivodship` (
  67. `users_id` INT NOT NULL,
  68. `voivodeship_id_voivodeship` INT NOT NULL,
  69. PRIMARY KEY (`users_id`, `voivodeship_id_voivodeship`))
  70. ENGINE = InnoDB;
  71.  
  72. SHOW WARNINGS;
  73.  
  74. SET SQL_MODE=@OLD_SQL_MODE;
  75. SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
  76. SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;


Ok, więc skleciłem takie zapytanie:


  1. $users = DB::table('users')
  2. ->join('users_has_voivodeship', 'users.id', '=', 'users_id')
  3. ->join('voivodeship', function ($join) {
  4. $join->on('voivodeship.id_voivodeship', '=', 'users_has_voivodeship.voivodeship_id_voivodeship')
  5. ->where('users_has_voivodeship.voivodeship_id_voivodeship', '=', 5);
  6. })
  7. ->get();


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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 06:40