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?
-- MySQL Script generated by MySQL Workbench
-- Sun May 20 12:37:39 2018
-- Model: New Model Version: 1.0
-- MySQL Workbench Forward Engineering
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
DROP SCHEMA IF EXISTS `mydb` ;
-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
SHOW WARNINGS;
USE `mydb` ;
-- -----------------------------------------------------
-- Table `users`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `users` ;
SHOW WARNINGS;
CREATE TABLE IF NOT EXISTS `users` (
`id` INT NOT NULL,
`email` VARCHAR(255) NULL,
`name` VARCHAR(255) NULL,
`account` INT NULL COMMENT '1: użytkownik, 2:zespół / DJ',
`password` VARCHAR(255) NOT NULL,
`remember_token` VARCHAR(100) NULL,
`created_at` TIMESTAMP(100) NULL DEFAULT NULL,
`updated_at` TIMESTAMP(100) NULL DEFAULT NULL,
`confCode` VARCHAR(255) NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
SHOW WARNINGS;
CREATE UNIQUE INDEX `id_UNIQUE` ON `users` (`id` ASC);
SHOW WARNINGS;
-- -----------------------------------------------------
-- Table `voivodeship`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `voivodeship` ;
SHOW WARNINGS;
CREATE TABLE IF NOT EXISTS `voivodeship` (
`id_voivodeship` INT NOT NULL,
`name` VARCHAR(255) NULL,
PRIMARY KEY (`id_voivodeship`))
ENGINE = InnoDB;
SHOW WARNINGS;
-- -----------------------------------------------------
-- Table `users_has_voivodship`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `users_has_voivodship` ;
SHOW WARNINGS;
CREATE TABLE IF NOT EXISTS `users_has_voivodship` (
`users_id` INT NOT NULL,
`voivodeship_id_voivodeship` INT NOT NULL,
PRIMARY KEY (`users_id`, `voivodeship_id_voivodeship`))
ENGINE = InnoDB;
SHOW WARNINGS;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Ok, więc skleciłem takie zapytanie:
$users = DB::table('users')
->join('users_has_voivodeship', 'users.id', '=', 'users_id')
->join('voivodeship', function ($join) {
$join->on('voivodeship.id_voivodeship', '=', 'users_has_voivodeship.voivodeship_id_voivodeship')
->where('users_has_voivodeship.voivodeship_id_voivodeship', '=', 5);
})
->get();
I działa dla users_has_voivodeship.voivodeship_id_voivodeship = 5, ale jak wybrać jeszcze pozostałe które zostały dostarczone stringiem?