Hogyan modelleznéd adatbázisban a következőt?
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Elsősorban attól függ, hogy 1-sok vagy sok-sok kapcsolatról van szó.
Ha mindenkinek csak egy főnöke lehet, akkor elég a fonok_id. Ha egy emberhez több főnök is tartozhat, akkor meg kell a pivot tábla.
Milyen MVC illetve ORM? Mert pl Laravel Eloquent ezt nagyon szépen megcsinálja pár sor kóddal.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Ha fa struktúráról van szó, akkor elég egy tábla.
Itt van az SQL kód:
/* Szemelyek tabla */
CREATE TABLE t_user (
pk_i_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, /* Szemely azonositoja */
s_name VARCHAR(100) NOT NULL, /* Szemely neve */
fk_i_boss_id INT(10) UNSIGNED NULL, /* Fonok azonositoja */
PRIMARY KEY (pk_i_id),
FOREIGN KEY (fk_i_boss_id) REFERENCES t_user (pk_i_id)
) ENGINE=InnoDB DEFAULT CHARACTER SET 'UTF8' COLLATE 'UTF8_GENERAL_CI';
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Ha Laravel, akkor meg marha egyszerű.
A User migration-ba:
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name',150);
$table->integer('boss_id')->unsigned()->nullable();
});
Aztán a User modelben:
public function boss() {
return $this->belongsTo('App\User','boss_id','id');
}
És innentől ha lekérsz egy User objektumot, akkor egyszerűen, akár több szinten keresztül le tudod kérdezni a főnököket.
Tehát pl:
$user = User::find(3);
És akkor működik ez:
$user->boss;
De ez is:
$user->boss->boss;
Már persze csak addig, amíg van főnöke az illetőnek.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
A Laravel alapjait egy hét alatt megtanulod, youtube-on millió tutorial video van. A maradék meg majd jön fejlesztés közben, szerencsére a Laravel saját dokumentációja kiváló.
És amúgy piszok gyorsan lehet benne dolgozni, gyakorlatilag alád tol mindent.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Mondjuk nekem a Laravelre kellet írnom magamnak egy patch-et, mert volt olyan szolgáltató aki letiltotta a putenv függvényt, és PhpDotEnv konkrétan használhatatlan volt és a .env-et se tudtam olvasni env()-el... :D
megoldás: .env ekte úgy néz ki majdnem mint egy .ini féle fájl, oszt rátoltam egy ini readert php oldalon. Így meg megbabráltam a env() függvényt és jónapot. Persze azért ennél szebben. :)
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!