ManyToManyリレーションがタイムアウトしたSymfony5オブジェクトのシリアル化

ムハンマド・タシュフィーン

私のSymfony5アプリケーションには、Product2つのプロパティ$categories$bundlesを持つエンティティクラスあります。製品クラスには、両方のプロパティとのManyToMany関係があります。プロパティのいずれかをコメントアウトすると、製品のシリアル化は完全に機能します。ただし、両方のプロパティが存在する場合、シリアル化はタイムアウトします。

Productクラスからのコードの抜粋。

class Product
{
    /**
     * @ORM\ManyToMany(targetEntity=ProductBundle::class, mappedBy="products")
     */
    private $productBundles;

    /**
     * @ORM\ManyToMany(targetEntity=Category::class, mappedBy="products")
     * @MaxDepth(1)
     */
    private $categories;

}

シリアル化のコードは以下のとおりです。

    $products = $productRepository->findBySearchQuery($name);
    $productsJson = $serializerInterface->serialize($products, 'json', [
        ObjectNormalizer::CIRCULAR_REFERENCE_HANDLER => function ($object) {
            return $object->getId();
        }
    ]);

他のStackoverflowの回答や@MaxDepthで提案されている@ORM / JoinTableアノテーションを使用してみましたが、うまくいきませんでした。プロパティのいずれかがコメントアウトされている場合、コードは機能します。これに関するアドバイスをいただければ幸いです。

ムハンマド・タシュフィーン

@Jakumiが指摘したように、シリアライザーはオブジェクトのプロパティ$categoriesを何度もループしていました$bundlesシリアル化グループを使用することで、これを回避しました。

製品クラス

class Product
{
    /**
     * @ORM\ManyToMany(targetEntity=ProductBundle::class, mappedBy="products")
     * @Groups("product_listing:read")
     */
    private $productBundles;

    /**
     * @ORM\ManyToMany(targetEntity=Category::class, mappedBy="products")
     * @Groups("product_listing:read")
     */
    private $categories;

}

カテゴリクラス

class Category
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     * @Groups("product_listing:read")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255)
     * @Groups("product_listing:read")
     */
    private $name;
}

シリアライザーの呼び出し

$products = $productRepository->findBySearchQuery($name);
$productsJson = $serializerInterface->serialize($products, 'json', ['groups' => 'product_listing:read']);

これが将来誰かに役立つことを願っています。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

NewtonSoft.JSONを使用したインターフェイス/抽象オブジェクトのシリアル化

分類Dev

symfony5は@ParamConverterアノテーションで失敗オブジェクトを取得しません

分類Dev

オブジェクトのコレクションのシリアル化と逆シリアル化

分類Dev

カスタムシリアル化によるJavaオブジェクトの外部化のシミュレーション

分類Dev

オブジェクトのリストを別のコレクションタイプに逆シリアル化します

分類Dev

C#NewtonsoftJSON-不明なオブジェクトのコレクションを使用したオブジェクトの逆シリアル化

分類Dev

RXJSサブジェクトのサブスクライブ-アクションはプレーンオブジェクトである必要があります。非同期アクションにカスタムミドルウェアを使用する

分類Dev

JSONシリアライザーを使用したMongoDBオブジェクトIDの逆シリアル化

分類Dev

デルタタイムを使用したオブジェクトのアニメーション

分類Dev

GSONを使用した単純なオブジェクトのシリアル化/非シリアル化-タイムゾーンインジケーターエラーなし

分類Dev

JObject.FromObjectを使用したプレーンな値とオブジェクトのシリアル化

分類Dev

Aフレーム:シナリオを使用してシーン上のオブジェクトをアニメーション化する方法

分類Dev

WCFサービスによりエラーが発生します '...'オブジェクトグラフでシリアル化または逆シリアル化できるアイテムの最大数はサーバーマシンで '65536 ...'です

分類Dev

カスタムファイルタイプのバイトストリームを.NetCoreのPOCOオブジェクトに逆シリアル化します

分類Dev

現在のJSONオブジェクト(例:{"name": "value"})をリストのコレクションタイプに逆シリアル化できません

分類Dev

コレクションフィールドを持つオブジェクトのGSONカスタムシリアライザー

分類Dev

jsonオブジェクト内のカスタムオブジェクトをシリアル化します

分類Dev

C#MongoDBドライバーを使用して、オブジェクト参照のコレクションをシリアル化する方法は?

分類Dev

Serializableインターフェイスを実装しましたが、クラスオブジェクトはまだシリアル化できません

分類Dev

シリアル化されたJavaオブジェクトのいくつかのバージョンの管理

分類Dev

ハイチャート、json /シリアル化されたチャートオブジェクトオプションを取得しますか?

分類Dev

C#:リフレクションなしでオブジェクトをXMLにシリアル化する

分類Dev

SQLテーブルをオブジェクトコレクションに逆シリアル化する

分類Dev

Symfony4またはSymfony5の新しいプロジェクトに小枝/エクステンションをインストールします

分類Dev

カウントダウンタイマーが終了した後、クリア(ローカルストレージ、セッションストレージ)?

分類Dev

ジャクソンの逆シリアル化:カスタムオブジェクトファクトリ

分類Dev

アプリケーションが「アクションはプレーンオブジェクトである必要があり、非同期アクションにはカスタムミドルウェアを使用する」を返すのはなぜですか

分類Dev

オブジェクトのリストを使用した非シリアル化/シリアル化

分類Dev

JSON.NETでのインターフェイスオブジェクトの逆シリアル化

Related 関連記事

  1. 1

    NewtonSoft.JSONを使用したインターフェイス/抽象オブジェクトのシリアル化

  2. 2

    symfony5は@ParamConverterアノテーションで失敗オブジェクトを取得しません

  3. 3

    オブジェクトのコレクションのシリアル化と逆シリアル化

  4. 4

    カスタムシリアル化によるJavaオブジェクトの外部化のシミュレーション

  5. 5

    オブジェクトのリストを別のコレクションタイプに逆シリアル化します

  6. 6

    C#NewtonsoftJSON-不明なオブジェクトのコレクションを使用したオブジェクトの逆シリアル化

  7. 7

    RXJSサブジェクトのサブスクライブ-アクションはプレーンオブジェクトである必要があります。非同期アクションにカスタムミドルウェアを使用する

  8. 8

    JSONシリアライザーを使用したMongoDBオブジェクトIDの逆シリアル化

  9. 9

    デルタタイムを使用したオブジェクトのアニメーション

  10. 10

    GSONを使用した単純なオブジェクトのシリアル化/非シリアル化-タイムゾーンインジケーターエラーなし

  11. 11

    JObject.FromObjectを使用したプレーンな値とオブジェクトのシリアル化

  12. 12

    Aフレーム:シナリオを使用してシーン上のオブジェクトをアニメーション化する方法

  13. 13

    WCFサービスによりエラーが発生します '...'オブジェクトグラフでシリアル化または逆シリアル化できるアイテムの最大数はサーバーマシンで '65536 ...'です

  14. 14

    カスタムファイルタイプのバイトストリームを.NetCoreのPOCOオブジェクトに逆シリアル化します

  15. 15

    現在のJSONオブジェクト(例:{"name": "value"})をリストのコレクションタイプに逆シリアル化できません

  16. 16

    コレクションフィールドを持つオブジェクトのGSONカスタムシリアライザー

  17. 17

    jsonオブジェクト内のカスタムオブジェクトをシリアル化します

  18. 18

    C#MongoDBドライバーを使用して、オブジェクト参照のコレクションをシリアル化する方法は?

  19. 19

    Serializableインターフェイスを実装しましたが、クラスオブジェクトはまだシリアル化できません

  20. 20

    シリアル化されたJavaオブジェクトのいくつかのバージョンの管理

  21. 21

    ハイチャート、json /シリアル化されたチャートオブジェクトオプションを取得しますか?

  22. 22

    C#:リフレクションなしでオブジェクトをXMLにシリアル化する

  23. 23

    SQLテーブルをオブジェクトコレクションに逆シリアル化する

  24. 24

    Symfony4またはSymfony5の新しいプロジェクトに小枝/エクステンションをインストールします

  25. 25

    カウントダウンタイマーが終了した後、クリア(ローカルストレージ、セッションストレージ)?

  26. 26

    ジャクソンの逆シリアル化:カスタムオブジェクトファクトリ

  27. 27

    アプリケーションが「アクションはプレーンオブジェクトである必要があり、非同期アクションにはカスタムミドルウェアを使用する」を返すのはなぜですか

  28. 28

    オブジェクトのリストを使用した非シリアル化/シリアル化

  29. 29

    JSON.NETでのインターフェイスオブジェクトの逆シリアル化

ホットタグ

アーカイブ