Php arrayCollection原则使用字符串代替object
我有两个实体,文档和字段,在实体内部我有一些关系,一个是omany,另一个是manytone。。 当我试图从控制器中的文档中获取字段值时,我遇到了麻烦。由于无法在字符串上使用methode,因此出现错误 恢复: document.php的一部分: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
/**
* @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();
}