NDBTable join vracia iba jeden riadok
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Čamo
- Člen | 798
Zdravím,
prosím vás prečo mi NDBT join vracia len jeden riadok miesto
viacerých?
Mám v modeli repozitár s metódou findBy():
class ArticlesRepository extends Repository
{
public function findBy( array $by )
{
return parent::findBy( $by )->select('
articles.*,
:articles_langs.meta_desc,
:articles_langs.title,
:articles_langs.slug,
:articles_langs.perex,
:articles_langs.content
');
}
}
Keď to zavolám
$this->articlesRepository->findBy( ['articles.id' => 100] )->fetchAll();
tak mi to vygeneruje SQL ktoré je správne a keď ho spustím ako čisté SQL vráti správne všetky riadky nie iba jeden:
SELECT
`articles`.*,
`articles_langs`.`meta_desc`,
`articles_langs`.`title`,
`articles_langs`.`slug`,
`articles_langs`.`perex`,
`articles_langs`.`content`
FROM `articles`
LEFT JOIN `articles_langs` ON `articles`.`id` = `articles_langs`.`articles_id`
WHERE (`articles`.`id` = 100)
Ale v aplikácii dostanem vždy iba jeden jediný riadok. Je toto chovanie zámerné, alebo mám ja niekde chybu?
Editoval Čamo (14. 7. 2017 19:11)
- David Matějka
- Moderator | 6445
ahoj. toto je ocekavane chovani. NDBT je delane na to, ze vybira data pouze z jedne tabulky. pokud se v sql radek z te hlavni tabulky vyskytuje vicekrat, tak to zgroupuje dle ID.
nemuzes pouzit related()?