Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Wangarad 14. 06. 2019, 09:35:38
-
Dobry den.
Mam trosku problem vytvoirt select s sql v Laravel 5.
Existuju 2 tabulky prva games - obsahuje user_id a ostatne info
druha je user a tam su ostatne info o uzivateloch.
Aktualne v controllery mam toto na vytiahnutie hier
// games stats
$gamesTotal = Game::where('status', Game::STATUS_COMPLETED)->count();
$gamesTotalBet = Game::where('status', Game::STATUS_COMPLETED)->sum('played');
Neviem ako to nalinkovat na uzivatela. Teda napriklad tabulka games vyber prvu hru kde je status complete vyber user_id pozri do tabulky user kde user=nieco a vyhod vysledok.
Nieaky typ ako na to? V SQL to dam ale v laravel mi to nechce behat ako si predstavujem
-
Nikdy jsem nepracoval s PHP frameworky, ale jedno vím jistě, že Laravel jsou sprostě obšlahnuté RubyOnRails postavené na PHP
Takže je dost možné, že to bude podobné jako v Railsích a tam se to dělá tak, že se vytvoří initializers/something.rb
a v něm pro danou třídu zápis něco jako:
class Version < ::ActiveRecord::Base
belongs_to :user, foreign_key: :whodunnit
end
kde model 'user' bude náležet modelu 'Version' a ID z tabulky 'users' se dostane do sloupce 'whodunnit' v tabulce 'users'
https://nova.laravel.com/docs/1.0/resources/relationships.html#hasmany
(https://nova.laravel.com/docs/1.0/resources/relationships.html#hasmany)
-
Je to v zasade tak, jak kolega vyse nastinil. Bude potreba udelat trida (Eloquent model) `Game`, a k tomu druha trida (model) `User`
Nalinkovani se potom dela pomoci relacnich metod, kde trida `Game` bude mit definovanou relacni funkci na model `User`:
public function user()
{
return $this->belongsTo(User::class);
}
Pote bude mozne udelat neco jako $game = Game::where(...)->first();
(vytazeni prvniho zaznamu dle nejakych podminek)
a k informacim uzivatele bude mozne pristupovat pomoci `$game->user`
Pro uplnost jeste odkaz na oficialni dokumentaci
https://laravel.com/docs/5.8/eloquent-relationships