`更换电脑后出现“类的 ArrayAccess 对象中的键“0”不存在”错误

问题描述 投票:0回答:1

我更换了计算机并尝试将我的项目导入到新计算机。

我使用 Symfony(我的旧电脑上有 6 个,新电脑上有 7 个)。在导入所有数据之前,我使用 Doctrine 在本地重新创建数据库。在该项目中,一本书有作者和编辑。

为什么我会收到错误

"Key "0" in object with ArrayAccess of class "Doctrine\ORM\PersistentCollection" does not exist.

尽管它加载了所有数据,但作者集合是空的,对于编辑器,我有:

-lazyObjectState: Symfony\Component\VarExporter\Internal\LazyObjectState {#1038 ▼
        +status: UNINITIALIZED_FULL

我的关系已映射。我的旧电脑上没有这个问题。

实体:

<?php

namespace App\Entity;

use App\Repository\LibrisRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;

#[ORM\Entity(repositoryClass: LibrisRepository::class)]
#[ORM\Table("exlibris")]
class Libris implements \JsonSerializable
{
    #[ORM\Id]
    #[ORM\GeneratedValue]
    #[ORM\Column]
    private ?int $id = null;

    [...]

    #[ORM\ManyToOne(inversedBy: 'libris')]
    #[ORM\JoinColumn(nullable: false)]
    private ?Editeur $editeur = null;

    #[ORM\ManyToMany(targetEntity: Auteur::class, inversedBy: 'libris')]
    private Collection $auteurs;

    #[ORM\Column(length: 100, nullable: true)]
    private ?string $xl_img = null;

    #[ORM\Column(length: 50)]
    private ?string $xl_livre = null; /*nom du Libris*/

    #[ORM\OneToMany(mappedBy: 'libris', targetEntity: BDConcern::class)]
    private Collection $bdConcernes;
<?php

namespace App\Entity;

use App\Repository\AuteurRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;

#[ORM\Entity(repositoryClass: AuteurRepository::class)]
class Auteur implements \JsonSerializable
{
    #[ORM\Id]
    #[ORM\GeneratedValue]
    #[ORM\Column]
    private ?int $id = null;

    #[ORM\Column(length: 30)]
    private ?string $nom = null;

    #[ORM\Column(length: 30, nullable: true)]
    private ?string $prenom = null;

    #[ORM\ManyToMany(targetEntity: Libris::class, mappedBy: 'auteurs')]
    private Collection $libris;

这里出现错误:

    {% for l in listL %}
            [...]
                {{ l.auteurs[0].prenom }} {{ l.auteurs[0].nom }}</p>
            [...]
    {% endfor %}

列表的 ddL

Accueil控制器:

$listL = $libRepo->findAccRecent();

libRepo:

public function findAccRecent(): array
   {
        $etats = [1, 2];

    return $this->createQueryBuilder('l')
           ->andWhere('l.xl_etat IN (:etat)')
           ->setParameter('etat', $etats)
           ->orderBy('l.xl_date', 'DESC')
           ->setMaxResults(18)
           ->getQuery()
           ->getResult();
   }

symfony doctrine-orm relational-database
1个回答
0
投票

发现问题在于没有在存储库中添加所有联接。不知道为什么它以前有效。

© www.soinside.com 2019 - 2024. All rights reserved.