Расширение дерева gedmo/dectrine не может использовать объект в качестве массиваPhp

Кемеровские программисты php общаются здесь
Anonymous
Расширение дерева gedmo/dectrine не может использовать объект в качестве массива

Сообщение Anonymous »

Я создал сущность с таблицей закрытия и хранилищем вместе. Я пробую базовый пример создания дерева, но вижу, как ошибка не может использовать объект приложения типа \ Entity \ Discurvess \ Comment As Array при вызове GetCommentTreeFordIscussion
entity:
#[Gedmo\Tree(type: 'closure')]
#[Gedmo\TreeClosure(class: CommentClosure::class)]
#[ORM\Entity(repositoryClass: CommentRepository::class)]
#[ORM\HasLifecycleCallbacks]
class Comment implements Identifiable
{
use IdentifiableEntity;
use TimestampableEntity;

#[ORM\Column(type: 'text')]
private string $content;

#[ORM\ManyToOne(targetEntity: User::class)]
#[ORM\JoinColumn(nullable: false)]
private User $author;

#[ORM\ManyToOne(targetEntity: Discussion::class, inversedBy: 'comments')]
#[ORM\JoinColumn(nullable: false)]
private Discussion $discussion;

#[Gedmo\TreeParent]
#[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'replies')]
#[ORM\JoinColumn(referencedColumnName: 'id', nullable: true, onDelete: 'CASCADE')]
private ?Comment $parent = null;

#[ORM\OneToMany(targetEntity: self::class, mappedBy: 'parent', cascade: ['persist', 'remove'])]
private Collection $replies;

#[Gedmo\TreeLevel]
#[ORM\Column(type: 'integer')]
private int $level = 0;

#[ORM\ManyToMany(targetEntity: User::class)]
#[ORM\JoinTable(name: 'comment_likes')]
private Collection $likedBy;

// --- Getters / Setters
< /code>
Закрытие: < /p>
#[ORM\Entity]
class CommentClosure extends AbstractClosure
{
#[ORM\ManyToOne(targetEntity: Comment::class)]
#[ORM\JoinColumn(name: 'ancestor', referencedColumnName: 'id', nullable: false, onDelete: 'CASCADE')]
protected $ancestor;

#[ORM\ManyToOne(targetEntity: Comment::class)]
#[ORM\JoinColumn(name: 'descendant', referencedColumnName: 'id', nullable: false, onDelete: 'CASCADE')]
protected $descendant;
}
< /code>
Repository: < /p>
class CommentRepository extends ClosureTreeRepository
{
public function __construct(EntityManagerInterface $manager)
{
parent::__construct($manager, $manager->getClassMetadata(Comment::class));
}

public function getCommentTreeForDiscussion(Discussion $discussion): array
{
$roots = $this->findBy(['discussion' => $discussion, 'parent' => null], ['createdAt' => 'ASC']);

return $this->buildTree($roots);
}
}


Подробнее здесь: https://stackoverflow.com/questions/796 ... t-as-array

Вернуться в «Php»