我想使用来自未映射数据库(单独的实体管理器“ ps”)中的值动态加载变量。例如,我创建了变量$ categories。
namespace AppBundle\Entity;
/**
* ModProduct
*
* @ORM\Table(name="mod_product")
* @ORM\Entity
*/
class ModProduct
{
...
public static $categories = [];
...
}
现在,我想用值填充此属性。我想到了以下解决方案:
结果应该简单地是,每当我需要ModProduct :: $ categories时,它应该已经从辅助数据库中提取了一次类别,并填充了阵列以供进一步使用。
答案 0 :(得分:1)
我可能会创建一个postLoad事件监听器,并在加载实体时使用它来执行您需要执行的任何操作。
因此只需创建一个新类
// Event listener
namespace Whatever;
use Doctrine\ORM\Event\LifecycleEventArgs;
class MyEventListener
{
public function postLoad(LifecycleEventArgs $args)
{
$entity = $args->getObject();
// your logic here..
}
}
然后将其声明为带有相对标记的服务
// services.yaml
Whatever\MyEventListener:
tags:
- { name: doctrine.event_listener, event: postLoad, method: postLoad }
official documentation中的更多信息。