Symfony原则关联


symfony doctrine associations

嗨,所以我设法让这个工作在用户和作业之间的关系

我完全按照同样的程序,检查了文档,我很困惑

我想建立的关系是工作

1有许多工作项分配给它的作业

. ./实体/Job.php

 /**
 * @ORM'OneToMany(targetEntity="Work",mappedBy="workJob")
 *
 */
protected $jobToWork;
/**
 * Add jobToWork
 *
 * @param 'Laelaps'InvoiceBundle'Entity'Work $jobToWork
 * @return Job
 */
public function addJobToWork('Laelaps'InvoiceBundle'Entity'Work $jobToWork)
{
    $this->jobToWork[] = $jobToWork;
    return $this;
}
/**
 * Remove jobToWork
 *
 * @param 'Laelaps'InvoiceBundle'Entity'Work $jobToWork
 */
public function removeJobToWork('Laelaps'InvoiceBundle'Entity'Work $jobToWork)
{
    $this->jobToWork->removeElement($jobToWork);
}
/**
 * Get jobToWork
 *
 * @return 'Doctrine'Common'Collections'Collection
 */
public function getJobToWork()
{
    return $this->jobToWork;
}

. ./实体/Work.php

/**
 * @ORM'ManyToOne(targetEntity="Job",inversedBy="jobToWork")
 * @ORM'JoinColumn(name="work_job", referencedColumnName="id")
 */
protected $workJob;
/**
 * Set workJob
 *
 * @param integer $workJob
 * @return Work
 */
public function setWorkJob($workJob)
{
    $workJob->addJobToWork($this);
    $this->workJob = $workJob;
    return $this;
}
/**
 * Get workJob
 *
 * @return integer
 */
public function getWorkJob()
{
    return $this->workJob;
}

我做了一个app/console原则:generate:crud

我知道这对我的用户到工作的关系是有效的,它是以完全相同的方式建立的。

当我尝试去创建一个新的"工作"项时,我得到的错误是类的对象。'实体'作业无法转换为字符串

任何帮助,一如既往,非常感谢

在答案

中定义
public function __toString()
{
    return (string) $this->getJobName();
}

当我使用FOSUserBundle和我的用户类扩展了FOSUser类时,这意味着__toString()函数是在FOSUser中定义的,因此在创建与user的关联时没有问题。

您可能尝试将Job显示为字符串(例如在选择框或列表中)。只需在Job实体中添加__toString()方法,如下所示:

public function __toString()
{
    return $this->name; // For example
}