Problém s propojením databází

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

Zdravím mám problém a jsem opravdu bezmocný… Propojuji tabulky pomocí related. Kód vypadá másledovně:

<div n:foreach="$author->related('author_book') as $a_book">
            <p>{$a_book->books->name}</p>
</div>

Mám tabulku authors(id, name, price), books(id, name, year) a poslední spojovou author_book(id, author_id, book_id) – v této tabulce mám cizí klíče snad správně
A jsem opravdu v koncích protože nechápu proč to neběží..
Program po spuštění vyhodí tuto chybu: Cannot read an undeclared column ‚books‘. Opravdu už nevím co s tím a budu rád za každou radu díky moc.

David Matějka
Moderator | 6445
+
0
-

misto a_book->books->name pouzij jen a_book->book->name (book misto books). kdyz se totiz odkazujes na has one relaci, tak neni dulezity nazev cilove tabulky, ale nazev spojovaciho sloupce

honza.berta
Člen | 10
+
0
-

Ale zde jde o relaci m:n to jsem zapomněl napsat promiň

honza.berta
Člen | 10
+
0
-

Prosím opravdu někdo nevíte ?

Mysteria
Člen | 797
+
0
-

A zkusil si přepsat {$a_book->books->name} na {$a_book->book->name} jak ti bylo porazeno?

Myiyk
Člen | 321
+
0
-

David Matějka napsal(a):

misto a_book->books->name pouzij jen a_book->book->name (book misto books). kdyz se totiz odkazujes na has one relaci, tak neni dulezity nazev cilove tabulky, ale nazev spojovaciho sloupce

A tohle jsi zkoušel?

honza.berta
Člen | 10
+
0
-

Zas ten samý problém…
Cannot read an undeclared column ‚book‘.

Myiyk
Člen | 321
+
0
-

Aha, ten sloupec se u tebe jmenuje book_id, tak zkus to.

honza.berta
Člen | 10
+
0
-

Chyba se změnila: Trying to get property of non-object

honza.berta
Člen | 10
+
0
-

Ale to bude spíš tim že to volam z book_id

David Matějka
Moderator | 6445
+
+1
-

$a_book->book->name je spravne. jestli to nefunguje, tak zkus smazat cache a zkontroluj si ty FK

honza.berta
Člen | 10
+
0
-

Musím ty klíče nějakym spůsobem nastaovat nebo je stačí jenom vytvořit ?

David Matějka
Moderator | 6445
+
0
-

staci vytvorit. discovered conventions si je natahne samo. kdyztak sem hod sql dump tech tri tabulek (vcetne FK)

honza.berta
Člen | 10
+
0
-

Tabulka authors:

-- Struktura tabulky `authors`

CREATE TABLE `authors` (
  `id` int(11) NOT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL,
  `price` text CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- Klíče pro tabulku `authors`

ALTER TABLE `authors`
  ADD PRIMARY KEY (`id`);

-- AUTO_INCREMENT pro tabulku `authors`
ALTER TABLE `authors`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;COMMIT;

Tabulka books

-- Struktura tabulky `books`

CREATE TABLE `books` (
  `id` int(11) NOT NULL,
  `book_name` text CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL,
  `year` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- Klíče pro tabulku `books`

ALTER TABLE `books`
  ADD PRIMARY KEY (`id`);

-- AUTO_INCREMENT pro tabulku `books`

ALTER TABLE `books`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;COMMIT;

Tabulka author_book:

-- Struktura tabulky `author_book`

CREATE TABLE `author_book` (
  `id` int(11) NOT NULL,
  `author_id` int(11) NOT NULL,
  `book_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- Klíče pro tabulku `author_book`

ALTER TABLE `author_book`
  ADD PRIMARY KEY (`id`),
  ADD KEY `author_id` (`author_id`),
  ADD KEY `book_id` (`book_id`);

-- AUTO_INCREMENT pro tabulku `author_book`

ALTER TABLE `author_book`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;COMMIT;
author_id: ALTER TABLE `test`.`author_book` DROP INDEX `author_id`, ADD INDEX `author_id` (`author_id`) USING BTREE;
book_id: ALTER TABLE `test`.`author_book` DROP INDEX `book_id`, ADD INDEX `book_id` (`book_id`) USING BTREE;

Editoval honza.berta (14. 7. 2017 11:55)

David Matějka
Moderator | 6445
+
+1
-

nikde nevidim definici cizich klicu

honza.berta
Člen | 10
+
0
-

aha tak já myslel že ho tam mam.. pomohl by si mi ho posím vytvořit ? Dělam to v phpmyadmin

David Matějka
Moderator | 6445
+
0
-

phpmyadmin jsem leta nevidel, takze tohle je jedine, cim muzu poradit

honza.berta
Člen | 10
+
0
-

Jo tak už jsem to dokázal no… Měl jsem opravdu špatně nstavený ten klíč.. Strašně moc děkuji za tvoji trpělivost a za tvoje rady fkt díky moc :)