Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.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 实体和setter函数之间的关系出错_Php_Entity Framework_Symfony_Doctrine Orm - Fatal编程技术网

Php 实体和setter函数之间的关系出错

Php 实体和setter函数之间的关系出错,php,entity-framework,symfony,doctrine-orm,Php,Entity Framework,Symfony,Doctrine Orm,我从昨天起就一直在努力解决这个问题,但我没有找到任何解决办法 我有两个相互关联的实体,如下所示: // src/FEB/UserBundle/Entity/User.php namespace FEB\UserBundle\Entity; use FOS\UserBundle\Entity\User as BaseUser; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="feb_user") */

我从昨天起就一直在努力解决这个问题,但我没有找到任何解决办法

我有两个相互关联的实体,如下所示:

// src/FEB/UserBundle/Entity/User.php

namespace FEB\UserBundle\Entity;

use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity
* @ORM\Table(name="feb_user")
*/
class User extends BaseUser
{
/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

public function __construct()
{
    parent::__construct();
    // tu propia lógica
}
}
Account.php
namespace FEB\UserBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* Account
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="FEB\UserBundle\Entity\AccountRepository")
*/
class Account
{
    /**
    * @var integer
    *
    * @ORM\Column(name="id", type="integer")
     * @ORM\Id
    * @ORM\GeneratedValue(strategy="AUTO")
    */
    private $id;

    /**
    * Many-To-Many, Unidirectional
    *
    * @var ArrayCollection $idusr
    *
    * @ORM\ManyToMany(targetEntity="\FEB\UserBundle\Entity\User")
    * @ORM\JoinTable(name="accounts_users",
    *      joinColumns={@ORM\JoinColumn(name="account_id", referencedColumnName="id")},
    *      inverseJoinColumns={@ORM\JoinColumn(name="usr_id", referencedColumnName="id")}
    * )
    */
    private $idusr;

    public function __construct() {
         $this->idusr = new \Doctrine\Common\Collections\ArrayCollection();
    }

/**
 * Set idusr
 *
 * @param string $idusr
 * @return Account
 */
public function setIdusr($idusr)
{
    $this->idusr = $idusr;

    return $this;
}

/**
 * Get idusr
 *
 * @return integer 
 */
public function getIdusr()
{
    return $this->idusr;
}
没有要生成的表单,因为用户不必输入任何数据,所以只能使用setter,而不是AccountType中的buildForm方法。 在Account实体中,除了与用户实体“setIdusr”相关的字段的setter之外,所有setter函数都可以正常工作。这给我带来了一个错误:

Catchable Fatal Error: Argument 1 passed to Doctrine\Common\Collections\ArrayCollection::__construct() must be of the type array, string given, called in C:\xampp\htdocs\FEB\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php on line 528 and defined in C:\xampp\htdocs\FEB\vendor\doctrine\collections\lib\Doctrine\Common\Collections\ArrayCollection.php line 47
我怎样才能解决这个问题

提前谢谢你


编辑:我将尝试解释它应该如何工作:当我创建一个新帐户时,它应该在关系表“account\u user”中自动创建一个条目,该条目的id为新帐户id和用户id。

就我现在所见,在父类中,您的$id是私有的,而在子类中,您再次将其定义为受保护的

因此,或者不要使用相同的变量名。
或者在父级中将其定义为受保护。

我已经解决了!!!, 我必须在Account实体中创建一个“addUser”方法,然后我必须传递一个User对象参数。
我传递了一个字符串作为参数,这就是错误。

同样的错误,我定义了$id protected并得到了同样的错误。提供的2个类/文件不是错误中提到的文件!你能提供错误行吗?第528行ArrayCollection.php第47行的UnitOfWork.php错误非常明显。您正在将字符串传递给某个类_构造($variable),其中需要一个数组。我不写那个。我在其他情况下构建了这些实体关系,它工作得很好,唯一的区别是它们构建了表单,以便用户输入数据,而现在是应用程序输入数据,而不是表单。我将尝试解释它应该如何运行:当我创建一个新帐户时,它应该在关系表“account\u user”中自动创建一个条目,该条目的id为新帐户id和用户id。