标签: entity

Symfony 4 Serializer:反序列化请求并将其与实体(包括客户端未完全传递的关系)合并

假设我有一个名为 User 的实体:

class User implements UserInterface
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
     private $id;

    /**
     * @ORM\Column(type="string", length=255, nullable=false)
     */
     private $username;

     /**
     * @ORM\OneToOne(targetEntity="App\Entity\Address", cascade={"persist", "remove"})
     * @ORM\JoinColumn(nullable=false)
     */
    private $address;
Run Code Online (Sandbox Code Playgroud)

地址字段与地址实体是一对一的关系:

class Address
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255)
     */
    private $street;

    /**
     * @ORM\Column(type="string", length=255)
     */
    private $name;
Run Code Online (Sandbox Code Playgroud)

我有一个用于更新用户及其地址的控制器:

...
 public function putUserSelf(Request $request)
    {
        $em = $this->getDoctrine()->getManager();
        $user = $this->getUser();

        $encoders = array(new JsonEncoder()); …
Run Code Online (Sandbox Code Playgroud)

php entity doctrine symfony symfony4

1
推荐指数
1
解决办法
2601
查看次数

对这些实体之间的关系进行建模的最有效方法是什么?

我有一个包含实体的数据库,如下所示:

1. User entity
2. Event entity (musical concert etc.)
3. Ticket entity
3. Notification entity
Run Code Online (Sandbox Code Playgroud)
  • 通知实体与工单和事件都有直接关系(1:N [工单/事件:通知])。
  • 通知将存储在数据库中,用户可以通过通知选项卡访问它们。
  • 用户可以收到与其门票相关的通知(例如“我们刚刚将您的门票发送给您!”)或有关某些活动的通知(例如“活动 xy 即将推出!预订您的位置!”)。

我一直在思考三种可能的解决方案:

a) 通知实体具有以下结构:

id serial PRIMARY KEY, 
.
.
ticketId integer REFERENCES tickets(id),
eventId integer REFERENCES events(id))
userId integer REFERENCES users(id) // this is present in all three solutions;
Run Code Online (Sandbox Code Playgroud)

这样,Notification 实体就拥有两个外键,但一次只填充其中一个(eventId 或 TicketId),另一个永远为空。

b) 通知实体仅具有与通知本身相关的列,它不包含任何外键(userId 除外)。
关系被提取到另外两个具有此结构的关系映射表中(对于通知-工单关系,同样适用于通知-事件,除了外键引用事件):

id serial PRIMARY KEY,
notificationId integer REFERENCES notifications(id),
ticketId integer REFERENCES tickets(id));
Run Code Online (Sandbox Code Playgroud)

这样,我们创建了类似接口的东西,并且不让通知实体知道任何有关关系的信息(它只有与通知本身和 userId 相关的属性),并且我们还有两个映射关系的附加表。

c) 将Notification实体分成两个不同的实体
(TicketNotification、EventNotification),每个实体具有相同的属性,但外键列不同。

- TicketNotification - …
Run Code Online (Sandbox Code Playgroud)

sql database database-design entity relational-database

1
推荐指数
1
解决办法
1600
查看次数

实体在 swagger UI api 平台中不可见

我使用 Api 平台 & Symfony (5.4) + php 7.2.5

我自己创建了一个实体,我只是在 /src/Entity 中添加了一个文件,但它不起作用。

我刷新,清除缓存,添加@ApiResource...但是实体在API平台的文档页面中不可见。

你知道错误出在哪里吗?谢谢 !

这是我用于新实体的代码:

// api/src/Entity/Review.php

namespace App\Entity;

use ApiPlatform\Core\Annotation\ApiResource;

/** A review of a book. */
/** 
* @ApiResource()
*/
class Review
{
    /** The id of this review. */
    private ?int $id = null;

    /** The rating of this review (between 0 and 5). */
    public int $rating = 0;

    /** The body of the review. */
    public string $body = '';

    /** The author of …
Run Code Online (Sandbox Code Playgroud)

php entity symfony api-platform.com

1
推荐指数
1
解决办法
2172
查看次数

迭代中使用存储库的内存泄漏(在开发环境中)

您好,我在尝试使用以下代码创建大量产品评论时遇到内存泄漏:

echo "Start: " . memory_get_usage();
foreach ($reviews['items'] as $review) {
    $newReview = $this->handleReviewData($review, $languages, $salesChannels, $context);

    if ($newReview) {
        $reviewsToImport[] = $newReview;
    }
    echo "End: " . memory_get_usage();
}

$this->productReviewRepository->create($reviewsToImport, $context);
Run Code Online (Sandbox Code Playgroud)

我正在$this->productReviewRepositoryinside上运行多个查询$this->handleReviewData。所以我猜测以某种方式造成了泄漏,但我找不到 or ->flush()->clear($entity)因为它不是 Symfony)。有任何想法吗?

它为每次迭代添加+-1000000 bytes( 1mb) 内存。

处理评论数据函数:

public function handleReviewData($review, $languages, $salesChannels, $context): ?array
{
    $reviewLocaleCode = $review['questionnaire']['locale'];
    $productSku = $review['product']['sku'];
    $salesChannels = $salesChannels->filter(static function ($salesChannel) use ($review) {
        /* @var $salesChannel TrustApiEntity */
        return $salesChannel->getChannelId() …
Run Code Online (Sandbox Code Playgroud)

memory entity memory-leaks repository shopware6

1
推荐指数
1
解决办法
207
查看次数

如何使用 symfony 5.4 getRepository() 获取子文件夹中的实体?

在 Symfony 5.4 之前,我曾经这样引用我的实体

public function findAction($archived = false)
{
    $em = $this->getDoctrine()->getManager();
    $analyses = $em->getRepository('App:Hazardlog\Analysis')->findAll();
Run Code Online (Sandbox Code Playgroud)

我记得不久前有一个以 ::class 结尾的新语法(可能已经在 symfony 4 中),但我一直坚持这种语法,因为我将我的实体组织到子文件夹中(这是旧时代的残余) src 中的代码应该驻留在一堆包中......)。

然而,现在我得到的只是一个简洁的错误:

类“Analysis::class”不存在

这是我的目录结构

Entity
  Hazardlog
    Analysis
    Risk
Run Code Online (Sandbox Code Playgroud)

现在,我尝试了多种方法来在末尾使用 ::class 引用我的实体,但似乎都不起作用。

我可以不将我的目录保留在 symfony 5.4 中吗?还是有一种我没有找到的方法?

我试过了

$analyses = $em->getRepository('App:Hazardlog\Analysis::class')->findAll();
Run Code Online (Sandbox Code Playgroud)

也尝试过

$analyses = $em->getRepository('Hazardlog\Analysis::class')->findAll();
Run Code Online (Sandbox Code Playgroud)

$analyses = $em->getRepository('Analysis::class')->findAll();
Run Code Online (Sandbox Code Playgroud)

(我知道最后一个是一个远景,但由于应用程序中只有一个 Analysis 实体,并且 symfony 设置为新语法,我认为 symfony 可能足够聪明,无论如何都能找到它)

这里有什么提示给我吗?

- - - - - - - - - 更新 - - - - - - - -

从 Cerad 的评论中我学到了一些行不通的方法

$analyses …
Run Code Online (Sandbox Code Playgroud)

entity doctrine symfony

1
推荐指数
1
解决办法
1541
查看次数

向实体类提供 Java 时钟以进行 Spring 验证

我正在开发一个 spring-boot 应用程序。我有一个名为 Message 的实体类,我想使用 Spring 验证对其进行验证。我需要验证的字段之一是 LocalDateTime,它不得早于当前日期 6 天。我的实体类如下所示:

@Entity
@EntityListeners(AuditingEntityListener.class)
public class Message implements Validator {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", length = 100, nullable = false, unique = true)
    private long id;

    @Column(name = "start", length = 20, nullable = true)
    private LocalDateTime start;

    public Message() {}

    @Override
    public boolean supports(@NotNull Class<?> clazz) {
        return Message.class.equals(clazz);
    }

    @Override
    public void validate(Object target, Errors errors) {
        Message m = (Message) target;

        if(m.getStart() != null && m.getStart().isBefore(LocalDateTime.now(clock).minusDays(6))) …
Run Code Online (Sandbox Code Playgroud)

java validation spring datetime entity

1
推荐指数
1
解决办法
69
查看次数

JPA映射关系实体parentID

有人可以帮助我理解如何定义一个与自身有关系的JPA映射实体?

例如,我的实体是CompanyDivision,divisionA包含divisionB,divisionC和divisionB包含divisionB1,divisionB2

  • divisionA
    • divisionB
      • divisionB1
      • divisionB2
    • divisionC

谢谢!

entity jpa map parentid relation

0
推荐指数
1
解决办法
1734
查看次数

XML - 从xml文档中删除非法字符

我有一个XML文档,其中包含特殊字符,如'%',回车符,换行符,&,<,>,',".我试图对整个xml文档进行编码,但在使用xmldocument.load方法时无法加载在C#中.

删除这些特殊字符的最佳方法是什么,而不必硬编码以用相应的实体引用替换非法字符?

xml encoding entity reference

0
推荐指数
2
解决办法
215
查看次数

如何覆盖分部类中的属性?

我正在开发一个MVC应用程序,我在开发它时使用了EF 4.0.我已经从模型中创建了类.现在,我想为MVC创建的每个类添加更多类.

恩.在下面的代码中,我得到了类Location.现在,我想再创建一个类(Partial class)如何覆盖分部类中的属性?

怎么做 ?

namespace Entities
{
   public partial class Location
   {               
       public int Id { get; set; }

       public string Name { get; set; }
       public string Remark { get; set; }      
       public string State { get; set; }       
       public string Region { get; set; }
       public string PinCode { get; set; }

       public virtual ICollection<Comment> Comments { get; set; }
   }    
}
Run Code Online (Sandbox Code Playgroud)

model-view-controller asp.net-mvc entity entity-framework-4

0
推荐指数
1
解决办法
5116
查看次数

如何在树枝模板中显示已连接的实体列

我不知道我错过了什么,但我一直在与Twig战斗,无法找出我误解的地方.

我有三个实体:Product,ProductImage和Category

每个产品作为一个类别和一个类别有许多产品.每个产品都有很多图片.

我能够列出图像集,这不是问题.

问题是我无法获取Twig模板文件中每个产品的类别描述(product.categories.description),原样如下:

{% extends '::base.html.twig' %}
{% block body %}
<div id="vitrines">
    {{ debug products }}
    {% for product in products %}
        <div class="boxVitrine">
            {% for image in product.images %}
                {% if(image.oneOfType == 'thumb') %}
                    <img src="{{ asset('bundles/artevitrinesite/products/') }}{{ image.filename }}" />
                {% endif %}
            {% endfor %}
            <div class="info">
                <div class="container">
                    <div class="top">
                        <div class="code">
                            Cod: <span class="red1"><strong>{{ product.code }}</strong></span>
                            <br />{{ product.categories.description }}
                        </div>
                        <div class="price">{{ product.price | bigprice | raw }}</div>
                    </div> …
Run Code Online (Sandbox Code Playgroud)

entity doctrine join symfony twig

0
推荐指数
1
解决办法
8556
查看次数