Nette/database/table Jak na backjoin do jiné tabulky?
- jAkErCZ
- Člen | 321
Zdravím vás,
Jsem začátečník tak bych chtěl trošku pomoci.
Mám Tabulku Company ze které si vytahuji všechny Informace do datagridu ale teď bych potřeboval udělat Join do jiné tabulky kde mi to vytáhne ULR adresy těch firem ( Podotýkám že jich může být více ) A jejich primární klíč je CoompanyID
Dotaz ze kterého si vytahuji všechno
return $this->database2->table(self::TABLE_NAME);
Potřeboval bych tento dotaz zároveň napojit na tabulku CompanyWebPage ze které si chci vytáhnout parametr Uri aby se díky tomu dalo vyhledávat v datagridu…
Předem všem díky za radu či pomoc :)
Editoval jAkErCZ (24. 5. 2017 15:04)
- filsedla
- Člen | 101
Kdybys chtěl vypsat URL adresy k jedné firmě, volal bys
foreach($companyRow->related('CompanyWebPage') as $webPageRow) ...
Jiná věc je ale hledání v URL adresách. Pro to potřebuješ do základního selection firem dostat
$selection->where(':CompanyWebPage.url', $searchedUrl)
Což je ale ošemetný where, protože ti může zduplikovat řádky z Company.
No, jsou to jenom momentální nápady, nevím jestli to pomůže…
Jaký používáš datagrid?
- jAkErCZ
- Člen | 321
Ano používám nejnovější datagrid…
Ale teď nastala jiná chyba…
Manager.php
public function getComponiesAll()
{
$selection = $this->database2->table(self::TABLE_NAME)->select('Company.*, :CompanyWebPage.*');
return $selection;
}
Nette\Database\DriverException #23000
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'ID' in order clause is ambiguous search►
Caused by PDOException
SQL
SELECT `Company`.*, `CompanyWebPage`.*
FROM `Company`
LEFT JOIN `CompanyWebPage` ON `Company`.ID = `CompanyWebPage`.`CompanyID`
ORDER BY ID
LIMIT 10
Jak tohle mám ošetřit? Sice jsem našel nějaké věci kolem tohoto ale přijde mi že to je zbytečně moc dotazů na DB.
Editoval jAkErCZ (25. 5. 2017 13:07)
- jAkErCZ
- Člen | 321
Tak mám stejný problém ale tentokrát jinde :D
$selection = $this->database3->table(self::TABLE_WEB_PAGE)->select('WebPage.CustomerID, WebPage.Uri, :Customer.Name');
a mám problém
Nette\InvalidArgumentException
No reference found for $WebPage->related(Customer). search►
Co dělám špatně když chci vytáhnout data z tabulky WebPage a z tabulky Customer jenom Name?