Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.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 arrayCollection原则使用字符串代替object_Php_Symfony_Doctrine Orm_Arraycollection - Fatal编程技术网

Php arrayCollection原则使用字符串代替object

Php arrayCollection原则使用字符串代替object,php,symfony,doctrine-orm,arraycollection,Php,Symfony,Doctrine Orm,Arraycollection,我有两个实体,文档和字段,在实体内部我有一些关系,一个是omany,另一个是manytone。。 当我试图从控制器中的文档中获取字段值时,我遇到了麻烦。由于无法在字符串上使用methode,因此出现错误 恢复: document.php的一部分: /** * @var ArrayCollection $fields * * @ORM\OneToMany(targetEntity="AUTOFUSION\AutofusionBundle\Entity\Field", mappedBy="do

我有两个实体,文档和字段,在实体内部我有一些关系,一个是omany,另一个是manytone。。 当我试图从控制器中的文档中获取字段值时,我遇到了麻烦。由于无法在字符串上使用methode,因此出现错误

恢复:

document.php的一部分:

/**
 * @var ArrayCollection $fields
 *
 * @ORM\OneToMany(targetEntity="AUTOFUSION\AutofusionBundle\Entity\Field", mappedBy="document", cascade={"persist", "remove", "merge"})
 */
private $fields;

/**
 * Constructor
 */
public function __construct()
{
    $this->fields = new \Doctrine\Common\Collections\ArrayCollection();
}

/**
 * Add field
 *
 * @param \AUTOFUSION\Autofusionbundle\Entity\Field $field
 *
 * @return Document
 */
public function addField(\AUTOFUSION\AutofusionBundle\Entity\Field $field)
{
    $this->fields[] = $field;

    return $this;
}

/**
 * Remove field
 *
 * @param \AUTOFUSION\AutofusionBundle\Entity\Field $field
 */
public function removeField(\AUTOFUSION\AutofusionBundle\Entity\Field $field)
{
    $this->fields->removeElement($field);
}

/**
 * Get fields
 *
 * @return \Doctrine\Common\Collections\Collection
 */
public function getFields()
{
    return $this->fields;
} 
DefaultController.php的一部分:

 public function indexAction{
    $regroupings = $em->getRepository('AUTOFUSIONAutofusionBundle:Regrouping')->FindRegrouping();
   }
  public function DocumentsArray($regroupings){
    $i=0;

    foreach($regroupings as $regrouping){

                foreach($regrouping->getDocuments() as $document){

                    foreach($document->getFields() as $fields){

                        var_dump($document->getFields());
                    die();


                            //$documents[$i] = $document->getFields()->getValue();

                    }
                    $i++;
                }
        return $documents;
    }

}
存储库的一部分:

 public function FindRegrouping(){

        return $this->_em->createQueryBuilder()
                ->select('p','gdt','dt','d','f')
                ->from('AUTOFUSION\AutofusionBundle\Entity\Regrouping', 'p')
                ->leftJoin('p.groupDocType', 'gdt')
                ->leftJoin('p.documents','d')
                ->leftJoin('d.docType', 'dt')
                ->leftJoin('d.fields', 'f')
                //->where('v.cp=:cp')
                //->setParameter('cp', $cp);
                ->getQuery()
                ->getResult();
    }
这里是部分输出
var_dump($document->getFields())


所以,我不明白为什么arraycollection的第一项是字符串

看看我的代码。当您迭代getFields()时,无需在循环内再次调用它
getFields()
返回数组,所以当您不尝试将其视为数组时,它的行为可能会有所不同。在本例中,它试图成为一个字符串

PS-代码中不需要
$i
计数器

foreach($document->getFields() as $field){
    var_dump($field);
    $documents[] = $field->getValue();
}
foreach($document->getFields() as $field){
    var_dump($field);
    $documents[] = $field->getValue();
}