【发布时间】:2018-02-20 19:18:06
【问题描述】:
我在装有 PHP 5.6.31(使用 Zend OPcache 7.0.6-dev)、Apache 和 MySQL(Ver 14.14 Distrib 5.6.37)的服务器上使用 Symfony 3.1.10。
我有一个名为 Document 的实体和一个名为 Worker
的相关实体直到今天,这种关系一直有效......当我使用工作人员检索文档时,所有工作人员字段都为空(ID 除外)。
所以如果在我的数据库中有一个工作人员的字段:id 4,姓名:John,年龄:33 如果我用这个工作相关者检索一个文档并转储 $document->getWorker() 我返回一个 id 为 4、名称:null、年龄:null 的对象 Worker。
文档类
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="documents")
* @ORM\Entity(repositoryClass="AppBundle\Repository\DocumentRepository")
*/
class Document
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", nullable=true)
*/
protected $object;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Worker", cascade={"persist"}, inversedBy="documents")
* @ORM\JoinColumn(name="worker_id", referencedColumnName="id", onDelete="SET NULL")
*/
protected $worker;
public function getId()
{
return $this->id;
}
public function setObject($object)
{
$this->object = $object;
return $this;
}
public function getObject()
{
return $this->object;
}
public function setWorker(\AppBundle\Entity\Worker $worker = null)
{
$this->worker = $worker;
return $this;
}
public function getWorker()
{
return $this->worker;
}
}
工人阶级
namespace AppBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints AS Assert;
/**
* @ORM\Entity
* @ORM\Table(name="workers")
* @ORM\Entity(repositoryClass="AppBundle\Repository\WorkerRepository")
*/
class Worker
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", nullable=true)
* @Assert\NotBlank()
*/
protected $firstName;
/**
* @ORM\Column(type="string", nullable=true)
* @Assert\NotBlank()
*/
protected $lastName;
/**
* @ORM\Column(type="string", nullable=true)
* @Assert\NotBlank()
*/
protected $age;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Document", mappedBy="worker")
*/
protected $documents;
public function __construct()
{
$this->documents = new ArrayCollection();
}
public function __toString() {
return $this->firstName . ' ' . $this->lastName;
}
public function getId()
{
return $this->id;
}
public function setFirstName($firstName)
{
$this->firstName = $firstName;
return $this;
}
public function getFirstName()
{
return $this->firstName;
}
public function setLastName($lastName)
{
$this->lastName = $lastName;
return $this;
}
public function getLastName()
{
return $this->lastName;
}
public function setAge($age)
{
$this->age = $age;
return $this;
}
public function getAge()
{
return $this->age;
}
public function addDocument(\AppBundle\Entity\Document $document)
{
$this->documents[] = $document;
return $this;
}
public function removeDocument(\AppBundle\Entity\Document $document)
{
$this->documents->removeElement($document);
}
public function getDocuments()
{
return $this->documents;
}
}
我在这里读到:Doctrine always return null values in production
我尝试了一切,但没有任何效果。
【问题讨论】:
-
使用注释或配置文件发布您的实体类!
-
您是否尝试过清除缓存?您发布了一些信息,以便我们能够提供任何帮助。
-
是的,迈克,我试图清除缓存,重新启动 httpd,重新启动 mysqld,重新启动服务器,运行 composer update,运行 php bin/console 学说:schema:update --force
-
可以添加你的相关实体
-
你能发布你的查询和你的实体类吗?您可能会遇到延迟加载。根据给出的少量信息,最好的猜测是更改您的请求,添加加入和选择。
标签: php mysql symfony doctrine opcache