![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 681 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
Panowie, przejdę może od razu do rzeczy, mam kod:
Role.php :
oraz RegisterController.php
czyli przy każdej rejestracji użytkownika dodaje także do tabeli role_user typ konta (firma / os. fiz) , oraz dodatkowo mam stworzony warunek , który nie działa zgodnie z jego logiką, tzn. sprawdzam czy istnieje w tabeli roles jakieś pola , jeżeli nie to dopisuje 2 rekordy person oraz firm. Problem w tym, że warunek ten działa zawsze bez znaczenia czy ów wartości znajdują się już w tabeli czy też nie. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Wiesz co, tak naprawdę to i tak, i tak będzie w porządku. Osobna tabela będzie miała taką zaletę, że możesz z poziomu bazy zadbać o integralność danych.
Konkretniej, to jest dobry przykład na użycie relacji 1:1. Dane byłyby połączone z użytkownikiem i user_id byłby unikalny. Kolumny w tej tabeli nie musiałyby być nullable. Mógłbyś też w jednoznaczny sposób się dowiedzieć, czy dany użytkownik wypełnił już swoje dane, czy nie. Świadczy o tym istnienie (lub brak) rekordu w tej dodatkowej tabeli. Wadą takiego rozwiązania jest to, że przy domyślnym użyciu Eloquent, pojawiłby się oczywiście obiekt pośredni, czyli zamiast np. $user->name miałbyś np. $user->data->name. Trochę upierdliwe. Ja bym chyba poszedł na skróty i dodał po prostu te kilka pól bezpośrednio do Usera w formie nullable. Integralność nie jest tak dobra, ale jest łatwiej ogarnąć dostęp do tych danych. Wtedy możesz wybrać jedną kolumnę jako dowód, że dane zostały już wypełnione, lub też wiele kolumn. Ja bym wstawił np. pole z datą wypełnienia danych (nullable) i tym się posługiwał przy ustalaniu czy ktoś wypełnił dane. Ten post edytował SmokAnalog 27.09.2020, 21:56:27 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 08:34 |