Category.php 925 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. namespace internship\bo;
  3. use n2n\persistence\orm\attribute\ManyToMany;
  4. use nql\bo\BlogArticle;
  5. use n2n\reflection\ObjectAdapter;
  6. use n2n\persistence\orm\CascadeType;
  7. class Category extends ObjectAdapter implements \JsonSerializable {
  8. public int $id;
  9. public string $name;
  10. /**
  11. * @var \ArrayObject<Article>
  12. */
  13. #[ManyToMany(Article::class, cascade: CascadeType::NONE)]
  14. public \ArrayObject $articles;
  15. function __construct() {
  16. $this->articles = new \ArrayObject();
  17. }
  18. private function getArticleIds() {
  19. $articles = array();
  20. foreach($this->articles as $article) {
  21. $articles[] = $article->basicJsonSerialize();
  22. }
  23. return $articles;
  24. }
  25. function basicJsonSerialize() {
  26. return [
  27. 'id' => $this->id,
  28. 'name' => $this->name
  29. ];
  30. }
  31. function jsonSerialize(): mixed {
  32. $basicJson = $this->basicJsonSerialize();
  33. $basicJson['articles'] = $this->getArticleIds();
  34. return $basicJson;
  35. }
  36. }