Php 当实体从JSONSerializableBieInterface实现时禁用延迟加载
我的实体是这样的:Php 当实体从JSONSerializableBieInterface实现时禁用延迟加载,php,doctrine,symfony4,Php,Doctrine,Symfony4,我的实体是这样的: <?php namespace App\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity(repositoryClass="App\Repository\WordRepository") */ class Word implements \JsonSerializable { const SOURCE_OXFORD = 'oxford';
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="App\Repository\WordRepository")
*/
class Word implements \JsonSerializable
{
const SOURCE_OXFORD = 'oxford';
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string")
*/
private $word;
/**
* @ORM\OneToMany(targetEntity="Definition", mappedBy="word")
*/
private $definitions;
/// other prorperties and setter/getters
public function jsonSerialize()
{
return [
'word' => $this->word,
'definitions' => $this->definitions,
];
}
}
但我不想重复定义。当我对json\u encode
the$word
现在我的问题是:当一个实体从
jsonSerializabeInterface
实现时,如何禁用延迟加载?为什么要将与基础架构相关的代码与域混合在一起,同时还要尝试攻击原则本身?从实体中删除接口,并使用a为您完成艰巨的工作
您的域将不再存在诸如序列化之类的低级问题,并且您将变得更加灵活,因为实体可以通过多种方式/格式进行序列化,具体取决于用例。谢谢。我使用了
serializer
,但是当我在定义
和另一个我在问题中没有提到的实体之间存在关系时,它有一些性能问题。我使用JSM\serializer
解决了我的问题。无论如何,谢谢你;)
foreach ($word->getDefinitions() as $definition) {
dump($definition->getDefinition());
}