Php 从join OneToOne Symfony2/2更新表中的字段

Php 从join OneToOne Symfony2/2更新表中的字段,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我对Symfony2中的Doctrine2和两个相关实体有问题 我有一个班 class Users { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string * * @ORM\Column(name="username", type="stri

我对Symfony2中的Doctrine2和两个相关实体有问题

我有一个班

class Users
{
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var string
 *
 * @ORM\Column(name="username", type="string", length=50)
 */
private $username;

/**
 * @var string
 *
 * @ORM\Column(name="password", type="string", length=50)
 */
private $password;

/**
 * @var boolean
 *
 * @ORM\Column(name="type", type="boolean")
 */
private $type;

/**
 * @var string
 *
 * @ORM\Column(name="email", type="string", length=255)
 */
private $email;

/**
 * @var string
 *
 * @ORM\Column(name="first_name", type="string", length=100)
 */
private $firstName;

/**
 * @var string
 *
 * @ORM\Column(name="last_name", type="string", length=100)
 */
private $lastName;

/**
 * @var string
 *
 * @ORM\Column(name="tel", type="string", length=255)
 */
private $tel;

/**
 * @var string
 *
 * @ORM\Column(name="url_img", type="string", length=255)
 */
private $urlImg;

/**
 * @var string
 *
 * @ORM\Column(name="company", type="string", length=255)
 */
private $company;

/**
 * @ORM\OneToOne(targetEntity="Providers", mappedBy="userId", cascade={"persist"})
 */
protected $provider;


/**
 * Get id
 *
 * @return integer 
 */
public function getId()
{
    return $this->id;
}

/**
 * Set username
 *
 * @param string $username
 * @return Users
 */
public function setUsername($username)
{
    $this->username = $username;

    return $this;
}

/**
 * Get username
 *
 * @return string 
 */
public function getUsername()
{
    return $this->username;
}

/**
 * Set password
 *
 * @param string $password
 * @return Users
 */
public function setPassword($password)
{
    $this->password = $password;

    return $this;
}

/**
 * Get password
 *
 * @return string 
 */
public function getPassword()
{
    return $this->password;
}

/**
 * Set type
 *
 * @param boolean $type
 * @return Users
 */
public function setType($type)
{
    $this->type = $type;

    return $this;
}

/**
 * Get type
 *
 * @return boolean 
 */
public function getType()
{
    return $this->type;
}

/**
 * Set idPrest
 *
 * @param integer $idPrest
 * @return Users
 */
public function setIdPrest($idPrest)
{
    $this->idPrest = $idPrest;

    return $this;
}

/**
 * Get idPrest
 *
 * @return integer 
 */
public function getIdPrest()
{
    return $this->idPrest;
}

/**
 * Set idEmbaucher
 *
 * @param integer $idEmbaucher
 * @return Users
 */
public function setIdEmbaucher($idEmbaucher)
{
    $this->idEmbaucher = $idEmbaucher;

    return $this;
}

/**
 * Get idEmbaucher
 *
 * @return integer 
 */
public function getIdEmbaucher()
{
    return $this->idEmbaucher;
}

/**
 * Set email
 *
 * @param string $email
 * @return Users
 */
public function setEmail($email)
{
    $this->email = $email;

    return $this;
}

/**
 * Get email
 *
 * @return string 
 */
public function getEmail()
{
    return $this->email;
}

/**
 * Set firstName
 *
 * @param string $firstName
 * @return Users
 */
public function setFirstName($firstName)
{
    $this->firstName = $firstName;

    return $this;
}

/**
 * Get firstName
 *
 * @return string 
 */
public function getFirstName()
{
    return $this->firstName;
}

/**
 * Set lastName
 *
 * @param string $lastName
 * @return Users
 */
public function setLastName($lastName)
{
    $this->lastName = $lastName;

    return $this;
}

/**
 * Get lastName
 *
 * @return string 
 */
public function getLastName()
{
    return $this->lastName;
}

/**
 * Set tel
 *
 * @param string $tel
 * @return Users
 */
public function setTel($tel)
{
    $this->tel = $tel;

    return $this;
}

/**
 * Get tel
 *
 * @return string 
 */
public function getTel()
{
    return $this->tel;
}

/**
 * Set urlImg
 *
 * @param string $urlImg
 * @return Users
 */
public function setUrlImg($urlImg)
{
    $this->urlImg = $urlImg;

    return $this;
}

/**
 * Get urlImg
 *
 * @return string 
 */
public function getUrlImg()
{
    return $this->urlImg;
}

/**
 * Set company
 *
 * @param string $company
 * @return Users
 */
public function setCompany($company)
{
    $this->company = $company;

    return $this;
}

/**
 * Get company
 *
 * @return string 
 */
public function getCompany()
{
    return $this->company;
}

/**
 * Set provider
 *
 * @param Providers $provider
 * @return Users
 */
public function setProvider($provider = null)
{
    $this->provider = $provider;

    return $this;
}

/**
 * Get provider
 *
 * @return Providers 
 */
public function getProvider()
{
    return $this->provider;
}



}
与OneTONE上的类提供程序相关(继承)

/** *设置用户ID * *@param\lebonindessservices\MainBundle\Entity\Users$userId *@返回提供者 */ 公共函数setUserId($userId=null) { $this->userId=$userId

    return $this;
}

/**
 * Get userId
 *
 * @return \leBonCoinDesServices\MainBundle\Entity\Users 
 */
public function getUserId()
{
    return $this->userId;
}

}
我只想获取从关系中创建的字段user\u id,以便在创建用户时能够获取此字段的id并将其提供给user\u id字段

当我测试控制器以创建用户和提供者时:

public function newUserAction()
{

    $user = new Users();
    $user->setUsername("gokusan");
    $user->setPassword("test");
    $user->setType("p");
    $user->setEmail("test@msn.com");
    $user->setFirstName("KHALIL");
    $user->setLastName("Ahmed");
    $user->setTel("0142021148");
    $user->setUrlImg("img/test/");
    $user->setCompany("Push&Pull");

    $this->getDoctrine()->getEntityManager()->persist($user);
    $this->getDoctrine()->getEntityManager()->flush();

    $provider = new Providers();
    $id = $user->getId();

    $provider->setUserId($id);

    $this->getDoctrine()->getEntityManager()->persist($provider);
    $this->getDoctrine()->getEntityManager()->flush();

    die("User Added");
}
这让我犯了一个错误:


警告:spl_object_hash()要求参数1为object,整数以F:\Programs Files\Program Files\wamp\www\LebonIndessServices\vendor\doctrine\orm\lib\doctrine\orm\UnitOfWork.php第1367行为单位要求
$userId
的类型为
\lebonindessservices\MainBundle\Entity\Users
,而不是
integer
类型。因此,您应该能够将
Users
对象传递给
$provider

$user = new Users();
...

$provder = new Providers();
...
$provider->setUserId($user);
$user = new Users();
...

$provder = new Providers();
...
$provider->setUserId($user);