Problém s propojením databází
- honza.berta
- Člen | 10
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
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
- David Matějka
- Moderator | 6445
$a_book->book->name
je spravne. jestli to nefunguje, tak
zkus smazat cache a zkontroluj si ty FK
- David Matějka
- Moderator | 6445
staci vytvorit. discovered conventions si je natahne samo. kdyztak sem hod sql dump tech tri tabulek (vcetne FK)
- honza.berta
- Člen | 10
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)
- honza.berta
- Člen | 10
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
phpmyadmin jsem leta nevidel, takze tohle je jedine, cim muzu poradit
- honza.berta
- Člen | 10
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 :)