使用"命名空间"在Docmine中使用Doctrine创建新实体

Jea*_*ean 4 symfony doctrine-orm

您知道在Symfony2中可以定义一个新实体,如下例所示:

use Acme\StoreBundle\Entity\Product;

public function defaultController() {
    $product = new Product();
    $product->setName('Pippo');
    $product->setPrice(19.99);
    ....
    // Use Doctrine EntityManager to store the Product object
}
Run Code Online (Sandbox Code Playgroud)

假设您知道Product类具有以下命名空间:" AcmeHomeBundle:Product ".通过使用命名空间(例如,通过使用EntityManager或类似的东西)创建$ product对象会很好.

public function defaultController() {
    $item = createObjectFromNamespace("AcmeHomeBundle:Product");
    $item->setName('Pippo');
    $item->setPrice(19.99);
    ....
    // Use Doctrine EntityManager to store the Item object
}
Run Code Online (Sandbox Code Playgroud)

你知道这是否可行?

假设您有一个提供实体类型的字符串

小智 10

你应该做这个...

$entityInfo = $this->em->getClassMetadata("entityNameSpace:entityName");
$entityMember = $entityInfo->newInstance();
Run Code Online (Sandbox Code Playgroud)

如果你想通过字符串使用setter方法:

$entitySetMethod = "set".\ucfirst("entityDataMemberName");
\call_user_func(array($entityMember, $entitySetMethod), $parameter);
Run Code Online (Sandbox Code Playgroud)