výběr dat z více tabulek mysql
- Petr Parolek
- Člen | 458
Ahoj,
nemůžu přijít na to, co mám špatně:
$inzeraty = $this->database->table('inzeraty');
foreach ($inzeraty as $inzerat) {
echo $inzerat->jmeno . " inzeruje:";
foreach ($inzerat->related('kniha') as $book) {
$book->nazev;
Laděnka mi hlásí:
Nette\Database\Reflection\MissingReferenceException
No reference found for $inzeraty->related(kniha).
Vždyť mán vytvořený cizí klíč v tabulce inzerty na sloupci knija, který směřuje na id knihy.
Prosím, poraďte mi někdo, kde mám chybu. Díky moc.
Editoval ppar (27. 3. 2015 15:16)
- smaley
- Člen | 6
Čo sa týka tvojej chyby tak mam pocit ze tie úvodzovky niesu správne
$inzeraty = $this->database->table("inzeraty");
foreach ($inzeraty as $inzerat) {
echo $inzerat->jmeno . " inzeruje:";
foreach ($inzerat->related("kniha") as $book) {
$book->nazev;
skús takto
Druhá vec skús si naštudovať JOIN MYSQL
- David Matějka
- Moderator | 6445
„related“ je pro „has many“ vazbu – tedy napriklad ze kategorie ma
clanky. V tvem pripade, jestli tomu dobre rozumim, mas v tabulce
„inzeraty“ FK s ID knihy? pak pouzij ref
(jestli tomu
nerozumim, tak posli dump tabulky, at je to jasne)
btw, precti si, jak formatovat kod, at to priste nemusim opravovat za tebe ;)
- Petr Parolek
- Člen | 458
CREATE TABLE IF NOT EXISTS `inzeraty` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`jmeno` varchar(100) NOT NULL,
`email` varchar(100) NOT NULL,
`kniha` int(11) NOT NULL,
`cena` int(4) NOT NULL,
PRIMARY KEY (`id`),
KEY `inzeraty_ibfk_1` (`kniha`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
INSERT INTO `inzeraty` (`id`, `jmeno`, `email`, `kniha`, `cena`) VALUES
(1, 'Petr', 'petr@example.com', 1, 250),
(2, 'Petr', '5uf3pb0ndmiztdd@my10minutemail.com', 1, 10),
(3, 'Petr', '5uf3pb0ndmiztdd@my10minutemail.com', 1, 10),
(4, 'Petr', '5uf3pb0ndmiztdd@my10minutemail.com', 1, 10),
(5, 'Petr', '5uf3pb0ndmiztdd@my10minutemail.com', 1, 10),
(6, 'Petr', '5uf3pb0ndmiztdd@my10minutemail.com', 1, 10),
(7, '123', 'toto není mail', 4, 0);
CREATE TABLE IF NOT EXISTS `knihy` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`autor` varchar(100) NOT NULL,
`nazev` varchar(100) NOT NULL,
`vydavatelstvi` varchar(100) NOT NULL,
`rok` int(4) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
INSERT INTO `knihy` (`id`, `autor`, `nazev`, `vydavatelstvi`, `rok`) VALUES
(1, 'Callum Hopkins', 'PHP Okamžitě', 'Computer press', 2014),
(2, 'Marian Böhmer', 'Návrhové vzory v PHP', 'Computer press', 2012),
(3, 'Jakub Vrána', '1001 tipů a triků pro PHP', 'Computer press', 2011),
(4, 'Jonathan Chaffer, Karl Swedberg', 'Mistrovství v jQuery', 'Computer press', 2013),
(5, 'Martin Mikuľák', 'Programování WWW stránek pro úplné začátečníky', 'Computer press', 2011);
ALTER TABLE `inzeraty`
ADD CONSTRAINT `inzeraty_ibfk_1` FOREIGN KEY (`kniha`) REFERENCES `knihy` (`id`);
--\
Mám podezření, že jsem špatně vytvořil cizí klíče....
Editoval ppar (27. 3. 2015 16:49)