Chyba v Nette\Database – Více sloupců vedoucí na jednu tabulku – Article(inserted_by, modified_by)
- daniel.mejta
- Člen | 21
Prosím o radu, případně řešení:
Tabulka „article“:
- id
- title
- content
- inserted_by (ref na user.id)
- modified_by (ref na user.id)
Tabulka „user“:
- id
- fullname
Verze Nette: Dev Nightbuild z 27. 12. 2011 pro PHP 5.3
Verze PHP: 5.3
Využívám Nette\Database:
<?php
...
$article = $database->table("article")->get($id);
echo $article->title . "<br />";
echo "Vložil: " . $article->ref("user", "inserted_by")->fullname . "<br />"; // Má se vrátit uživatel ID 1
echo "Změnil: " . $article->ref("user", "modified_by")->fullname . "<br />"; // Má se vrátit uživatel ID 2
?>
V databázi je např. inserted_by ID 1 a modified_by ID 2
Položené dotazy:
SELECT * FROM `article` WHERE `id` = 53;
SELECT * FROM `user` WHERE `user`.`id` IN(1);
Zkrátka u sloupce changed_by se nevybere uživatel a tak mi to na tom řádku hlásí Notice „Trying to get property of non-object“, protože
$article->ref("user", "modified_by")
nevrátí ActiveRow, ale null, protože uživatel s ID 2 nebyl ani dotázán.
Je jedno, jestli používám DiscoveryReflection, nebo ConventionalReflection (jako v případě výše). Nevím si rady, poradíte mi prosím někdo, jak na to? Nechce se mi to přepisovat do SQL.
Děkuji.
- daniel.mejta
- Člen | 21
hrach napsal(a):
Jakou mas verzi nette? Neco podobneho sem myslel, ze uz je opravene :/
Dnes jsem stahoval nightbuild :(
Pokud se budete chtít podívat na testovací projekt, je ke stažení:
TestNetteDatabase.zip
Edit: Nette Framework 2.0-dev (Nightly Build) pro PHP 5.3
Editoval daniel.mejta (27. 12. 2011 19:42)
- daniel.mejta
- Člen | 21
hrach napsal(a):
Jakou mas verzi nette? Neco podobneho sem myslel, ze uz je opravene :/
Tak jsem se díval na github a zjistil jsem, že tvůj commit s opravou se asi nějak nedostal do hlavní větve, nebo co, protože v aktuální verzi oprava není :(
Tak jsem si to upravil a funguje ale doufám, že to někdo do hlavní větve jednou dostane :) Díky za nakopnutí.
- hrach
- Člen | 1838
Toto opravene bude, ale mozna mas jiny problem. zkus https://github.com/…-refactoring
- ViPEr*CZ*
- Člen | 817
Tak tohle moc neozkouším… bych toho musel na zkoušku asi v aplikaci
poupravit více… používám 2.0.3 verzi nyní, ve 2.1 bude asi pár změn,
které zatím nechci aplikovat.
Pokud je tu ale opraven ten bug výše, objeví se to v 2.0.4, která by mohla
být zpětně kompatibilnější s 2.0.3 ?
PS: po vymazání cache mi to naběhlo… ref už mi bere druhý klíč… každopádně změny jsou v plánu až pro 2.1 nebo se již objeví ve verzi 2.0.4 ?
Editoval ViPEr*CZ* (17. 7. 2012 17:05)
- jtousek
- Člen | 951
Když nic jiného tak prohozené argumenty Selection::__construct. (https://github.com/…2469def04601)
EDIT: I když možná byla moje chyba že jsem to volal přímo. :-)
Editoval jtousek (29. 7. 2012 17:46)