Kdyby\Doctrine – EntityDao vrací Kdyby\GeneratedProxy\__CG__\<ClassName>
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- thm
- Člen | 147
"Zdravím Vás.
od včerejška se začínám učit Doctrine2. Ty základy mi fungují, ale děje
se mi divná (podle mně) věc.
Entity:
namespace App\Model;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
*/
class Article
{
use \Kdyby\Doctrine\Entities\MagicAccessors;
use \Kdyby\Doctrine\Entities\Attributes\Identifier;
/** @ORM\Column(type="string") */
protected $name;
/** @ORM\Column(type="integer")*/
protected $rank;
/** @ORM\ManyToOne(targetEntity="Category") */
protected $category;
/** @return string */
public function getFullName()
{
return $this->id.'#'.$this->name;
}
}
namespace App\Model;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
*/
class Category
{
use \Kdyby\Doctrine\Entities\MagicAccessors;
use \Kdyby\Doctrine\Entities\Attributes\Identifier;
/** @ORM\Column(type="string") */
protected $name;
}
Presenter
class HomepagePresenter extends BasePresenter
{
/** @var \Kdyby\Doctrine\EntityDao */
private $articles;
/** @var \Kdyby\Doctrine\EntityDao */
private $categories;
public function startup()
{
parent::startup();
$this->articles = $this->em->getRepository(\App\Model\Article::getClassName());
$this->categories = $this->em->getRepository(\App\Model\Category::getClassName());
}
public function renderDefault()
{
$this->template->articles = $this->articles->findAll();
$this->template->categories = $this->categories->findAll();
$category = $this->categories->find(1);
dump('Category 1',$category);
$article = $this->articles->find(1);
dump('Article 1',$article);
dump('Category form Article Entity',$article->category);
}
Dumpy vypíší:
"Category 1" (10)
Kdyby\GeneratedProxy\__CG__\App\Model\Category #5dcd
"Article 1" (9)
App\Model\Article #d4ba
"Category form Article Entity" (28)
Kdyby\GeneratedProxy\__CG__\App\Model\Category #5dcd
Proč je $category
Kdyby\GeneratedProxy\__CG__\App\Model\Category a ne
\App\Model\Category?
Pokud je to v pořádku proč se tak děje?
Pokud tyto přiřazení a dumpy provedu na konci startup(), tak je vše v pořádku:
"Category 1" (10)
App\Model\Category #5ce2
"Article 1" (9)
App\Model\Article #5422
"Category form Article Entity" (28)
App\Model\Category #5ce2
Pokud tyto přiřazení a dumpy nechám i ve startup() a v renderDefault(), tak je vše také v pořádku.
Editoval thm (7. 4. 2016 13:27)
- David Matějka
- Moderator | 6445
to je v poradku, to jsou vygenerovane tridy, ktere dedi tu tvoji entitu. jsou tam kvuli vnitrnim potrebam doctriny