Dotaz na převod klasického sql do nette database

jAkErCZ
Člen | 322
+
-1
-

Čau mám dotaz,
Mám tento sql dotaz

<?php
SELECT
  p.group_id AS group_id,
  MIN(p.id)  AS first_project_id
FROM
  project p
GROUP BY p.group_id
?>

A potřeboval bych to stejně udělat v nette database.

Jak na to prosím?

Díky

David Matějka
Moderator | 6445
+
0
-

ahoj,
a jak si to zkousel v nette database, ze ti to nefungovalo? precetl sis poradne dokumentaci o nette database?

jAkErCZ
Člen | 322
+
0
-

David Matějka napsal(a):

ahoj,
a jak si to zkousel v nette database, ze ti to nefungovalo? precetl sis poradne dokumentaci o nette database?

Tak sem to vyřešil takto

return $this->database->query('SELECT p.group_id AS group_id, MIN(p.project_id) AS first_project_id, p.client_id AS client FROM projects p GROUP BY p.group_id')->fetchAll();

Ale teď přemýšlím nad tím proč mi nefunguje $project->client->email i když si vracím client id který je klíčem spojeno s tabulkou client ale nemohu se propojit.

Dělám něco blbě? Nebo u query to musím dělat jinak než u nette database?

Phalanx
Člen | 310
+
+1
-

Máš tu chybně:

  1. discovery reflection ti nebude fungovat u query, použij selection
  2. vybíráš p.client_id AS client a pak chceš použít $project->client->email

Zkus takto:

<?php
return $this->database->table('projects')
   ->select('group_id, MIN(project_id) AS first_project_id, client.email')
   ->group('group_id')
   ->fetchAll();
?>
jAkErCZ
Člen | 322
+
0
-

Tohle bylo ono díky moc. :)