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%)
-----


  1. -- MySQL Script generated by MySQL Workbench
  2. -- Tue May 22 22:21:11 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 COMMENT '\'0: nieaktywne, 1:potwierdzone\'\n',
  38. PRIMARY KEY (`id`))
  39. ENGINE = InnoDB;
  40.  
  41. SHOW WARNINGS;
  42.  
  43. -- -----------------------------------------------------
  44. -- Table `voivodeship`
  45. -- -----------------------------------------------------
  46. DROP TABLE IF EXISTS `voivodeship` ;
  47.  
  48. SHOW WARNINGS;
  49. CREATE TABLE IF NOT EXISTS `voivodeship` (
  50. `id_voivodeship` INT NULL,
  51. `name` VARCHAR(255) NULL,
  52. PRIMARY KEY (`id_voivodeship`))
  53. ENGINE = InnoDB;
  54.  
  55. SHOW WARNINGS;
  56.  
  57. -- -----------------------------------------------------
  58. -- Table `users_has_voivodeship`
  59. -- -----------------------------------------------------
  60. DROP TABLE IF EXISTS `users_has_voivodeship` ;
  61.  
  62. SHOW WARNINGS;
  63. CREATE TABLE IF NOT EXISTS `users_has_voivodeship` (
  64. `users_id` INT NOT NULL,
  65. `voivodeship_id_voivodeship` INT NOT NULL,
  66. PRIMARY KEY (`users_id`, `voivodeship_id_voivodeship`))
  67. ENGINE = InnoDB;
  68.  
  69. SHOW WARNINGS;
  70.  
  71. SET SQL_MODE=@OLD_SQL_MODE;
  72. SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
  73. SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;


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ń...

  1. $count = count($wojewodztwa);
  2. $users=array();
  3. for ($while = 0; $while < $count; $while++) {
  4. $users = DB::table('users')
  5. ->join('users_has_voivodeship', 'users.id', '=', 'users_id')
  6. ->where('users_has_voivodeship.voivodeship_id_voivodeship', '=', $wojewodztwa[$while])
  7. ->select('users.*', 'users_has_voivodeship.*')
  8. ->get();
  9. }



Tylko jak teraz wtłoczyć do tablicy $users kolejne wyniki z następnego województwa?
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: 14.10.2025 - 23:09