我使用sonata admin来管理我的symfony应用程序中的实体。实体有很多属性,我想在奏鸣曲中管理它们。因此我将其添加到实体:
/**
* @ORM\ManyToMany(targetEntity="Product", inversedBy="farmer", cascade={"persist"})
* @ORM\JoinTable(name="farmerproduct",
* joinColumns={
* @ORM\JoinColumn(name="farmer_id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="product_id", referencedColumnName="id")
* }
* )
*/
private $products;
现在的问题是,在我的应用程序中,我抓取了很多这些农民(实体),最终导致 PHP致命错误:允许的内存大小为134217728字节耗尽
原因是,我通过JSON将结果发送到Web应用程序。
如何仅在奏鸣曲管理员中使用产品?我已经在下一步中编写了一些延迟加载样式的产品。所以我不需要在我的网络应用程序中使用它。
有什么想法吗?
答案 0 :(得分:0)
您在为管理员和网络应用分享相同操作时遇到了问题吗?如果您在管理员和Web应用程序中有不同的逻辑,则可以为它们创建两个不同的服务器包。
答案 1 :(得分:0)
好的问题很容易解决
第一种方法是使用序列化程序的setIgnored方法:http://symfony.com/doc/current/components/serializer.html#ignoring-attributes-when-serializing
如果这不起作用(因为它对我不起作用),第二种方式是:
第二种方式:仅为管理创建新的实体对象,并在该实体中添加manytomany,在admin.yml中重新配置sonata admin配置以使用映射到数据库中原始实体的新实体。将您的旧实体用于webapp。