Rôzne namespace pri Doctrine 2 entitách, ako na to?
- iNviNho
- Člen | 352
Ahojte,
Dajme tomu, že mám klasický rozdelenú admin časť aplikácie napríklad na:
- UserModule
- MultimediaModule
- InvoiceModule
- FooModule…
Každý Module má svoj namespace, ktorý má prefix napríklad
UserModule.
Teraz ak pod konkrétny modul patria nejaké Doctrine 2 entity, tak by som ich
napísal ako UserModule\Entities\User …
A teraz konkrétne by sme mali napríklad:
- UserModule\Entities\User
- MultimediaModule\Entities\Multimedia
- InvoiceModule\Entities\Invoice
- …
Všetko vyzeralo super až do chvíle, kým som nepoužíl:
public function __construct(EntityManager $em)
{
$this->em = $em;
$this->userEntity = $em->getRepository(\UserModule\Entities\User::getClassName());
}
a dostávam error: ** The class ‚UserModule\Entities\User‘ was not found in the chain configured namespaces App, Kdyby\Doctrine **
Kedysi som mal všetky entity v namespace App\Entities\Xyz a všetko fungovalo bez nejakých problémov, avšak troška som sa s tým hral a chcem si to takto upraviť…
Chcel by som sa teda opýtať, či už náhodou niekto neriešil podobný problém nastavenia mappingu pomocou nejakej masky v configu, alebo potom či je možné túto path k entitám pridať napríklad cez Extension ku každému modulu zvlášť :)
Ďakujem
- F.Vesely
- Člen | 369
Jde to jak v configu:
doctrine:
metadata:
UserModule: %appDir%/UserModule
MultimediaModule: %appDir%/MultimediaModule
nebo kdyz mas Extension:
class UserModuleExtension extends Nette\DI\CompilerExtension implements \Kdyby\Doctrine\DI\IEntityProvider
{
function getEntityMappings()
{
return [
'UserModule' => __DIR__ . '/../Entities'
];
}
}
- iNviNho
- Člen | 352
Opýtam sa ešte
class User extends \DefaultModule\Entities\DefaultEntity {
use \Kdyby\Doctrine\Entities\MagicAccessors;
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue
*/
protected $id;
...
/**
* @ORM\OneToMany(targetEntity="Log", mappedBy="user")
* @ORM\OrderBy({"datein" = "desc"})
*/
protected $logs;
Dostávam error: The target-entity UserModule\Entities\Log cannot be found in ‚UserModule\Entities\User#logs‘
Akonáhle prepíšem targetEntity na „LogModule\Entitites\Log“ tak to šlape, vyzerá to tak, že má problém s rôznymi namespaces, ale napadá ma potom, že to až taký problém nie je a v tej entite môžem pekne vidieť odkiaľ sa ta entita berie..