Chcem aby mi dotaz vrátil všetky stlpce z prvej a jeden stlpec z druhej tabuľky

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

Mám dve tabuľky:
POSTS:id,author_id…
USERS:id,username…
a potrebujem vypísať zoznam všetkých postov a s nimi meno autora (username).

public function postList() {
	return $this->connection->query('SELECT * FROM [posts] LEFT JOIN [users] ON [posts].author_id = [users].id')->fetchAll();
    }

problém je v tom, že funkcia fetchAll(), ktorú volám na konci vráti zrejme všetky stlpce z obidvoch tabuliek…túto metodu keď použijem v presenteri a premennú $posts pošlem do templatu tak sa mi tie tabuľky akoby prekrývali, teda keď vypíšem $post->id tak mi vypíše id z tabuľky user a nie z tabuľky posts.

mr.mac
Člen | 87
+
0
-

Nezbývá, než místo hvezdičky napsat seznam polí (sloupců), které chceš vidět, popř. jim přidělit alas jména:

...->query("SELECT p.neco, p.id as pid, u.id as uid, ...
	FROM [posts] p LEFT JOIN [users] u ON p.author_id = u.id";
Oli
Člen | 1215
+
0
-

No a co takhle to v NDB?

$rows = $this->connection->table('posts');

foreach ($rows as $row)
{
	$row->title;
	$row->id;
	$row->author->username;
}
lime
Člen | 55
+
0
-

Ja by som to rád iba cez dibi…a mr.mac tvoj kod mi nefunguje :/ už si s týmto dlho neviem rady, asi to spravím tak, že budem „predávať“ názvy namiesto id…
EDIT: toto som mal na mysli, takže hotovo:

SELECT [posts].*, [users].username FROM [posts] LEFT JOIN [users] ON [posts].author_id = [users].id

Editoval lime (17. 12. 2013 21:07)

mr.mac
Člen | 87
+
0
-

MySql databázi nepoužívám, taže syntaxe možná nebyla přesná asi by stačilo toto:

...->query("SELECT p.*, u.username
	FROM posts as p
	LEFT JOIN users as u ON p.author_id = u.id";