我觉得这应该不是很难,但尽可能地尝试,我一直都会遇到错误。
我想要做的是,有一个“添加”功能,它将处理向任何/所有表添加记录的基本功能。基本上,帖子数据将包含表名,以及要插入的字段/值。控制器本身确认用户有权访问这些内容,然后在创建实体的新实例之前验证字段是否有效,这就是事情变得混乱的地方:
$entityName = 'Products';
$row = new $entityName(); //doesn't work
$row new Products(); //works
我没有找到使用实体管理器创建新实体的方法或任何示例,或者可能有效,因为我已经创建了使用EM进行查询,更新和删除的功能,但我可以不能使用添加功能。
答案 0 :(得分:2)
1。您的问题几乎肯定是命名空间(见下文)。试试这个:
$entityName = 'My\Bundle\Entity\Products';
$row = new $entityName();
应该有效。 ;)
2. 如果要使用EntityManager创建新实例,请尝试以下操作:
$entityName = 'My\Bundle\Entity\Products';
$row = $em->getClassMetadata($entityName)->newInstance();
...假设$em
是您的EntityManager。 : - )
3. 要“证明”您的问题是命名空间,请在从命令行运行的普通.php文件中尝试此操作:
namespace Foo;
class Test {}
$class1 = 'Foo\Test';
$class2 = 'Test';
$x = new Test(); // Will work
$y = new $class1(); // Will work
$z = new $class2(); // Will trigger "Class 'Test' not found" fatal error
答案 1 :(得分:0)
两件事: