Я создал сущность с таблицей закрытия и хранилищем вместе. Я пробую базовый пример создания дерева, но вижу, как ошибка не может использовать объект приложения типа \ 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
Расширение дерева gedmo/dectrine не может использовать объект в качестве массива ⇐ Php
Кемеровские программисты php общаются здесь
1747379019
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);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79614536/gedmo-doctrine-tree-extension-cannot-use-object-as-array[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия