Как я могу создать массив с отношениями доктрины, joincolumn и ManyToOne? - PullRequest
0 голосов
/ 06 декабря 2018

Я связываю две сущности с ManyToOne:

* @ORM\ManyToOne(targetEntity="Icons")
* @ORM\JoinColumn(name="icon", referencedColumnName="id")

Это сущность pages:

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity(repositoryClass="App\Repository\PagesRepository")
*/
class Pages
{
  /**
  * @ORM\Id()
  * @ORM\GeneratedValue()
  * @ORM\Column(type="integer")
  */
  private $id;

  /**
  * @ORM\Column(type="string", length=10, unique=true)
  */

  private $unique_id;

  /**
  * @ORM\Column(type="string", length=255)
  */

  private $name;

  /**
  * @ORM\Column(type="string", length=255)
  */
  private $template;



  /**
  * @var \Icons
  *
  * @ORM\ManyToOne(targetEntity="Icons")
  * @ORM\JoinColumn(name="icon", referencedColumnName="id")
  */
  private $icon;

  public function getIcon(): ?Icons
  {
    return $this->icon;
  }

  public function setIcon(?Icons $icon): self
  {
    $this->icon = $icon;

    return $this;
  }






  /**
  * @ORM\Column(type="string", length=255)
  */
  private $slug;

  public function getId()
  {
    return $this->id;
  }




  public function setUniqueId(string $unique_id): self
  {
    $this->unique_id = $unique_id;

    return $this;
  }


  public function getUniqueId(): ?string
  {
    return $this->unique_id;
  }




  public function setUnique_id(string $unique_id): self
  {
    $this->unique_id = $unique_id;

    return $this;
  }

  public function getUnique_id(): ?string
  {
    return $this->unique_id;
  }




  public function getName(): ?string
  {
    return $this->name;
  }



  public function setName(string $name): self
  {
    $this->name = $name;

    return $this;
  }

  public function getTemplate(): ?string
  {
    return $this->template;
  }

  public function setTemplate(string $template): self
  {
    $this->template = $template;

    return $this;
  }



  public function getSlug(): ?string
  {
    return $this->slug;
  }

  public function setSlug(string $slug): self
  {
    $this->slug = $slug;

    return $this;
  }
}

В моем контроллере я вызываю его через доктрину:

$pages = $this->getDoctrine()->getRepository(Pages::class)->findAll();

Вывод:

array:5 [▼
  0 => Pages {#6356 ▶}
  1 => Pages {#6401 ▶}
  2 => Pages {#6402 ▶}
  3 => Pages {#6403 ▶}
  4 => Pages {#6404 ▼
    -id: 5
    -unique_id: "90c29507fd"
    -name: "Felder"
    -template: ""
    -icon: Icons {#6396 ▼
      +__isInitialized__: true
      -id: 1
      -name: "adjust"
       …2
     …2}
    -slug: "fields"
  }
]

Но мне нужен следующий вывод:

array:5 [▼
  0 => Pages {#6356 ▶}
  1 => Pages {#6401 ▶}
  2 => Pages {#6402 ▶}
  3 => Pages {#6403 ▶}
  4 => Pages {#6404 ▼
    -id: 5
    -unique_id: "90c29507fd"
    -name: "Felder"
    -template: ""
    -icon: "adjust"
    -slug: "fields"
  }
]

1 Ответ

0 голосов
/ 06 декабря 2018

Это не то, как доктрина ORM работает по своей природе.

Вы можете добавить метод __toString к Icons сущности.Таким образом, вы сможете отобразить в ветке, используя {{ page.icon }}` and not {{page.icon.name}} `

Помогает ли это?

В чем ваша проблема с экземпляром Icon""?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...