Problem select - back join

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
MarekR
Člen | 17
+
0
-

Zdravim Vas. Mam problem spravit select a bol by som povdacny keby niekto pomohol… Dokumentacku citam ale nechapem :(

SQL:

USERS:

  • id
  • name

PROJECTS:

  • id
  • name
  • founder_id

PROJECT_USERS:

  • id
  • user_id
  • project_id

A potrebujem spravit select projects podla founder_id + dostat pre kazdy riadok projects vsetkych userov ktory su v danom projekte.

Tiez by ma zaujimalo ako napisem select na projects ktory ma relaciu s users ak v projects nieje nazov stlpca user_id ale founder_id – da sa to?

A este taky detail ako mozem „vykonat“ select v modeli? priklad: $selection = $this->connection->table(‚projects‘); a potom Debugger::dump($selection); lenze v $selection niesu vysledky…

Editoval MarekR (29. 10. 2014 17:14)

David Matějka
Moderator | 6445
+
+1
-

A potrebujem spravit select projects podla founder_id + dostat pre kazdy riadok projects vsetkych userov ktory su v danom projekte.

$projects = $database->table('projects')->where('founder_id', 1);
foreach($projects as $project) {
	foreach($project->related('project_users') as $projectUser) {
		echo $projectUser->user->name;
	}
}

Tiez by ma zaujimalo ako napisem select na projects ktory ma relaciu s users ak v projects nieje nazov stlpca user_id ale founder_id – da sa to?

nevim, jestli chapu co chces, ale k tomu userovi se dostanes pomoci

$project->founder;

neni totiz dulezity nazev cilove tabulky, ale nazev spojovaciho sloupce, viz doc

A este taky detail ako mozem „vykonat“ select v modeli? priklad: $selection = $this->connection->table(‚projects‘); a potom Debugger::dump($selection); lenze v $selection niesu vysledky…

selection je lazy, aby se k nemu mohly pridat where, order atd. muzes pouzit treba metodu fetchAll, ktera vrati pole se zaznamy

MarekR
Člen | 17
+
0
-

Velke dik!

  1. To related() som asi v dokumentacke prehliadol – select ide este raz dik.
  2. Myslel som nieco ine ale uz som na to prisiel.
  3. fetchAll() – presne toto som potreboval! :)