Doctrine:类的对象无法转换为字符串

时间:2018-06-18 19:19:04

标签: php class pdo doctrine-orm

  

我的学说版本:v2.6.1

我正在尝试建立关联ManyToOne,我的意思是,很多工作只有一个状态。 在表作业中,我有一个名为“status_id”的列,它通过外键连接到表Status。在类php文件Jobs.php我有:

namespace App\Models\Entity;

use Doctrine\ORM\Mapping as ORM;
use App\Models\Entity\Edition;
use App\Models\Entity\Status;

/**
 * Class Jobs
 * @package App\Models\Entity
 * @ORM\Entity
 * @ORM\Table(name="jobs")
 */
class Jobs{
  /**
   * @var int
   * @ORM\Id
   * @ORM\Column(type="integer")
   * @ORM\GeneratedValue
   **/
  private $id;

  (......)

  /**
   * @var int
   * Many Jobs has One Status.
   * @ORM\Column(name="status_id")
   * @ORM\ManyToOne(targetEntity="Status", inversedBy="jobs")
   * @ORM\JoinColumn(name="status_id", referencedColumnName="id")
   **/
  private $status;

  (......)

  /**
   * @return Jobs
   */
  public function getStatus() {
    return $this->status;
  }

  /**
   * @param Jobs $status
   */
  public function setStatus(Status $status = null){
    $this->status = $status;
  }
}

显然这里我没有所有类的定义,只插入了我认为相关的内容。 在最后的 setStatus()中,我正在连接另一个名为Status的类,该类位于另一个文件中。

在index.php中我有:

  $job = new App\Models\Entity\Jobs();
  $job->setName($insertName);
  $job->setNotes("");
  $job->setSize("30x20x11");
  $job->setCustomerRef("");
  $job->setEditionId(17);

  $status = new App\Models\Entity\Status();
  $status->setName("Aprovado");
  $job->setStatus($status);

  $entityManager->persist($status);
  $entityManager->persist($job);
  $entityManager->flush();  

这给了我一个错误,我知道它在命令flush()中,我做了一些die()来检查它是否给出了错误。 错误如下:

  

可恢复致命错误:类App \ Models \ Entity \ Status的对象   无法转换为字符串   /home/.../vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php   在第101行

1 个答案:

答案 0 :(得分:1)

问题在于您如何映射$status属性:它使用@ORM\Column和关联映射,这是一个冲突,使Doctrine将您的状态保存为string。删除@ORM\Column注释,你应该没问题。