NextrasORM – po označení property jako primary nefungují relationships

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

Ahoj,
po té co jsem označil klíč jako primary v entitě, funkce níže nic nedumpne

		$user = $this->orm->users->getByUserId(1);
		foreach($user->vouchers as $voucher)
		{
			dump($voucher->id);
		}

V DB mám sloupec v jednotlivých tabulkách mám názvy user_id, voucher_id, voucher_type_id jako primární klíče,
pokud se jmenovaly „id“, tak vše fungovalo v pořádku. Přikládám entity a SQL které se vykoná.

SELECT vouchers.* FROM `vouchers` AS `vouchers` WHERE vouchers.user IN (NULL)
<?php

namespace Vouchers;

use Nette\Utils\DateTime;
use Nextras\Orm\Entity\Entity;
use Nextras\Orm\Relationships\OneHasMany;


/**
 * User
 *
 * @property int $userId {primary}
 * @property string $email
 * @property string $password
 * @property string $name
 * @property string $surename
 * @property string $paypal
 * @property DateTime $createdAt {default now}
 * @property DateTime $lastLogin
 * @property OneHasMany|Voucher[] $vouchers {1:m Voucher}
 */
class User extends Entity
{
}

<?php

namespace Vouchers;

use Nextras\Orm\Entity\Entity;
use Nextras\Orm\Relationships\ManyHasMany;


/**
 * Voucher
 *
 * @property int $voucherId {primary}
 * @property int $value
 * @property User $user {m:1 User}
 * @property VoucherType $voucherType {m:1 VoucherType}
 */
class Voucher extends Entity
{

}

<?php

namespace Vouchers;

use Nette\Utils\DateTime;
use Nextras\Orm\Collection\ICollection;
use Nextras\Orm\Entity\Entity;
use Nextras\Orm\Relationships\ManyHasMany;
use Nextras\Orm\Relationships\OneHasMany;


/**
 * Post
 *
 * @property int $voucherTypeId {primary}
 * @property int $maxValue
 * @property int $charCode
 * @property string $image
 * @property OneHasMany|Voucher[] $vouchers {1:m Voucher}
 */
class VoucherType extends Entity
{


}

Editoval Vastlik (3. 12. 2015 20:17)

hrach
Člen | 1844
+
0
-

Obecne: Prosim, neotevirejte nová Nextras ORM temata na foru, bud prispivejte do aktualního vlakna, nebo se ptejte na GitHubu. Diky


Jakou pouzivas verzi?

  • v 1.1 nejde mit entitu s jednim sloupcem primarnim klicem, ktery se jmenuje jinak nez id. Jedine, ze by si nededil od Nextras\Orm\Entity, ale od AbstractEntity. Ale i tak si nejsem jisty, ze by to mohlo vzdy fungovat dobre.
  • v 2.0 lze nasledovne:
/**
 * @property int $id {primary-proxy}
 * @property int $userId {primary}
 */
hrach
Člen | 1844
+
0
-

Jeste k 1.1:

Muzes samozrejme mit takto pojmenovany primarni klic, ale v mapperu ho to automaticky premapuje na $id; pokud k nemu chces pristupovat jako k $userId, samozrejme si muzes na to udelas getter a setter.

Felix
Nette Core | 1270
+
0
-

v 2.0 lze nasledovne

To myslis aktualne v masteru nebo mi neco uteklo?

hrach
Člen | 1844
+
0
-

@Felix tak. V masteru. On je to taky 2.0-dev.

Vastlik
Člen | 58
+
0
-

Čau, díky za odpověď. Nextras mám na „dev-master“, entity jsem přepsal na

* @property int $id {primary-proxy}
* @property int $userId {primary}
....

Ale ORM, se pokouší hledat dle id, ne userId. Viz. chybová hláška.

Unknown column 'users.id' in 'where clause'


SELECT `users`.* FROM `users` AS `users` WHERE `users`.`id` = 3 LIMIT 1


Editoval Vastlik (4. 12. 2015 18:40)

hrach
Člen | 1844
+
0
-

@Vastlik diky, opraveno, ono to doted fungovalo jenom pri proxy nad vice jak jednim sloupcem.

Vastlik
Člen | 58
+
0
-

Ahoj,
díky za odpověď. Stáhnul jsem si nejnovější verzi ORMka.
Error
Stále hlasí tento Error, pokud by jsi chtěl, pošlu celý stack, pokud chceš.
Při změně z $userId na $id, vše funguje normálně.

Díky za odpověď a tvoji práci!

hrach
Člen | 1844
+
0
-

Prosím o celou ladenku.

Vastlik
Člen | 58
+
0
-

Zde laděnka.
Díky

hrach
Člen | 1844
+
0
-

@Vastlik tak, konecne snad fixed :) https://github.com/…82150bf36f70

Vastlik
Člen | 58
+
0
-

@hrach ahoj, bohužel funguje jen na půl. Ze strany kniha->autor funguje v pohodě, ale procházení foreachem všech knih od autorů tzn. autor->knihy nefunguje. U many2many jsem nezkoušel. Nefunguje znamená, že to vratí null zda-li má autor nějaké knihy.
Díky!

edit: nebo je třeba přidat i tohle?
https://github.com/…rsMapper.php

Editoval Vastlik (20. 12. 2015 12:36)

hrach
Člen | 1844
+
0
-

@Vastlik tak ted :) https://github.com/…d7606c8616fb diky za trpelivost.