Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何显示数据库中多行的形式_Php_Symfony_Doctrine - Fatal编程技术网

Php 如何显示数据库中多行的形式

Php 如何显示数据库中多行的形式,php,symfony,doctrine,Php,Symfony,Doctrine,我正在尝试构建一个表单,该表单显示患者列表,其中包含来自多个表的数据。但是我不知道如何显示来自不同表的多条记录 我想我已经掌握了这个设置的基本知识。我只是不知道如何填补控制器中的空白,以使其协同工作。我在WorklistRepository中的查询似乎没有返回我期望的数据 ExtractionFormType.php class ExtractionFormType extends AbstractType { public function buildForm(FormBuilderI

我正在尝试构建一个表单,该表单显示患者列表,其中包含来自多个表的数据。但是我不知道如何显示来自不同表的多条记录

我想我已经掌握了这个设置的基本知识。我只是不知道如何填补控制器中的空白,以使其协同工作。我在WorklistRepository中的查询似乎没有返回我期望的数据

ExtractionFormType.php

class ExtractionFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder

            ->add('first_name',  TextType::class, ['disabled' => 'true'])
            ->add('accession_number', TextType::class, ['disabled' => true])
            ->add('extraction_number', TextType::class, ['disabled' => true])
            ->add('elution_volume', IntegerType::class, ['attr' => array('style' => 'background-color: rgb(255, 255, 153)'), 'data'=> 30])
            ->add('sample_volume', IntegerType::class, ['attr' => array('style' => 'background-color: rgb(255, 255, 153)'), 'data'=> 1])
            ->add('qubit_reading', IntegerType::class, ['disabled'=> true])
            ->add('dilution_volume', NumberType::class, ['disabled' => true])
            ->add('hydration_volume', NumberType::class, ['disabled' => true])
            ->add('final_concentration', NumberType::class, ['disabled' => true])
            ->add('final_volume', NumberType::class, ['disabled' => true]);
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => ExtractionFormModel::class
        ]);
    }
}
ExtractionFormModel.php


class ExtractionFormModel
{

    public $first_name;

    public $accession_number;

    public $extraction_number;

    public $elution_volume;

    public $sample_volume;

    public $qubit_reading;

    public $dilution_volume;

    public $hydration_volume;

    public $final_concentration;

    public $final_volume;
}
我有5个表需要从中获取数据以填充表单。 工作列表 样品提取 病人样本 医嘱 病人

在WorklistRepository中,我创建了一个查询这些表的函数,但调试它时,除了返回有关工作列表本身的数据外,并没有显示它返回了任何内容

WorklistRepository.php

    public function getWorklistDetails(int $id): ?array {
        return  $this->createQueryBuilder('wd')
            ->leftJoin('wd.sampleExtractions', 'se')
            ->leftJoin('se.PatientSample', 'ps')
            ->leftJoin('ps.patientOrders', 'po')
            ->leftJoin('ps.patient', 'p')
            ->where('wd.id = :id')->setParameter('id', $id)
            ->getQuery()
            ->execute();
    }
WorklistController.php

我现在只是在工作列表控制器中使用显示路由。我可以让表单显示,但显然没有数据

/**
     * @Route("/{id}", name="worklist_show", methods={"GET"})
     * @param Request $request
     * @param Worklist $worklist
     * @return Response
     */
    public function show(Request $request, Worklist $worklist): Response
    {

        $form = $this->createForm(ExtractionFormType::class);
        $form->handleRequest($request);

        if($form->isSubmitted() && $form->isValid()) {

            return $this->redirectToRoute('worklist_index');
        }

        return $this->render('worklist/show.html.twig', [
            'form' => $form->createView()
        ]);

以下是您的代码片段:

public function show(Request $request, $id): Response
{
    $em = $this->getDoctrine()->getManager();
    $worklist= $em->getRepository('App:Worklist')->getWorklistDetails($id);

    if(null === $worklist) {
        return $this->createNotFoundException('Worklist with id ' . $id . ' not found!');
    }

    $form = $this->createForm(ExtractionFormType::class, $worklist);
    //...

首先要弄清楚为什么您的查询似乎不起作用。它的编写方式应该返回一个包含一个Worklist实体的数组,提取实体存储在Worklist::sampleExtractions中。一旦您了解了这一点,那么您可能需要一个WorklistFormType,它是ExtractionFormTypes中的一个。我意识到这是在调试期间返回一个工作列表实体,我想可能我只是不知道如何从查询中访问其余的数据,因为我可以看到工作列表的名称,但看不到来自联接的任何详细信息。我做了类似的事情-在你的代码中,它说没有getWorklistDetails.`$worklist=$worklistRepository->getWorklistDetails($worklist->id);`我收到一个错误。传递给Symfony\Component\Form\Form::createView()的参数1必须是Symfony\Component\Form\FormView的实例,或者为null,给定字符串。如果错误是没有函数getWorklistDetails,则您知道存储库一定出了问题。实体文件工作流是否具有正确的注释?您使用的是哪个版本的Symfony?谢谢您的帮助,我正在将存储库作为参数传递给show()函数,并尝试以这种方式访问它。我不知道它需要注释,并且可以按照您向我展示的方式进行访问。我正在使用Symfony 4.3。