NextrasORM – po označení property jako primary nefungují relationships
- Vastlik
- Člen | 58
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
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}
*/
- Vastlik
- Člen | 58
Č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)
- Vastlik
- Člen | 58
@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)