Php 如何创建EntityManager实例以检索对象?
注意:我不想创建服务。这只是一个简单的应用程序。在平面php中,这将是小菜一碟,但由于某些原因,在symfony/doctrine中这是非常困难的…:(EntityManager在控制器中可用,但由于某些原因,它在其他类中不可用。我不关心MVP和干净的代码等等。我只想让它工作。我不明白为什么它会如此痛苦Php 如何创建EntityManager实例以检索对象?,php,symfony,doctrine,Php,Symfony,Doctrine,注意:我不想创建服务。这只是一个简单的应用程序。在平面php中,这将是小菜一碟,但由于某些原因,在symfony/doctrine中这是非常困难的…:(EntityManager在控制器中可用,但由于某些原因,它在其他类中不可用。我不关心MVP和干净的代码等等。我只想让它工作。我不明白为什么它会如此痛苦 public function buildForm(FormBuilderInterface $builder, array $options) { $current_year=getd
public function buildForm(FormBuilderInterface $builder, array $options)
{
$current_year=getdate()['year'];
$em = new \Doctrine\ORM\EntityManager;
$approving_teachers = $em->createQuery('select u from Teacher t where IsAuthorized = 1')->getResult();
$builder
->add('startDatetime', 'datetime', array('years' => range($current_year-1, $current_year), 'time_widget' => 'text'))
->add('hoursServed', 'number', array('constraints'=> array(new \Symfony\Component\Validator\Constraints\Range(array('min'=>0, 'max'=>500)))))
->add('activity')
->add('student')
->add('approvingTeacher', 'entity', array(
'class' => 'Teacher',
'choices' => $approving_teachers
))
;
}
为什么不使用“实体字段类型”:
使用实体字段类型,您可以使用EntityRepository检索您需要的任何内容。将
查询生成器添加到您的审批教师
字段。并使用EntityRepository
use Doctrine\ORM\EntityRepository;
此外,请检查文档:
首先看一看条令配置文档:。正如您将看到的,这比更新em要复杂一些。此外,在您的代码中需要使用相同的em。因此需要服务。也许您可以提供一些关于为什么不想注入它的详细信息。是的,他的查询需要工作,但从他询问的标题来看如何实例化实体经理。是的,我知道Cerad。我只是给他其他选择。我不知道如何将其变成服务。但他可以试试我的答案,因为他不喜欢它“复杂”
->add('approvingTeacher', 'entity', array(
...
'query_builder' => function(EntityRepository $er) {
return something...
}
))