Intereting Posts
PHP: как вызвать функцию дочернего класса из родительского класса Рекурсивная функция PHP SimpleXML для перечисления дочерних элементов и атрибутов htaccess ErrorDocument 404 перенаправление не работает Геолокация MySQL Query Альтернатива Apache RewriteLock с использованием PHP? Yii2: Как поместить нулевые значения в конец списка объектов при сортировке по возрастанию? Как структурировать модульное приложение в Laravel 5? Любой preg_match, чтобы проверить, является ли URL-ссылка для youtube / vimeo / dailymotion? Создание эскизов из swf-файла в php? Убедитесь, что WooCommerce address_field_1 содержит номер дома перед порядком обработки Zend Framework 2 – подключение к базе данных Вход в систему Facebook с помощью Sentry, для пользователя требуется пароль. Kohana v3.1.0 ORM _ignored_columns – теперь, когда он ушел, что мне делать вместо этого? Извлечь схему и хост из HTTP_REFERER Преимущество перехода по ссылке против использования глобального?

Присоединиться к таблице в Symfony 2

Я просто начал объектно-ориентированное программирование в Symfony 2, и у меня возникла проблема с объединением таблиц mysql.

У меня две таблицы:

kommuner : id, имя, емкость

Действия : id, name, kommune_id

Как присоединиться к этим таблицам в файлах сущностей?
Это моя функция в DefaultController:

public function aktiviteterAction() { $em = $this->get('doctrine.orm.default_entity_manager'); $aktiviteter = $em->getRepository(Aktiviteter::class)->findAll(); return $this->render('default/aktiviteter.html.twig', [ 'aktiviteter' => $aktiviteter, ]); } 

и это моя сущность, Kommune.php:

 <?php namespace AppBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * Kommune */ class Kommune { /** * @var integer */ private $id; /** * @var string */ private $name; /** * @var integer */ private $capacity; /** * Get id * * @return integer */ public function getId() { return $this->id; } /** * Set name * * @param string $name * @return Kommune */ public function setName($name) { $this->name = $name; return $this; } /** * Get name * * @return string */ public function getName() { return $this->name; } /** * Set capacity * * @param integer $capacity * @return Kommune */ public function setCapacity($capacity) { $this->capacity = $capacity; return $this; } /** * Get capacity * * @return integer */ public function getCapacity() { return $this->capacity; } } 

и это мой объект Aktiviteter.php:

 <?php namespace AppBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * Aktiviteter */ class Aktiviteter { /** * @var integer */ private $id; /** * @var string */ private $name; /** * @var integer */ private $kommuneId; /** * Get id * * @return integer */ public function getId() { return $this->id; } /** * Set name * * @param string $name * @return Aktiviteter */ public function setName($name) { $this->name = $name; return $this; } /** * Get name * * @return string */ public function getName() { return $this->name; } /** * Set kommuneId * * @param integer $kommuneId * @return Aktiviteter */ public function setKommuneId($kommuneId) { $this->kommuneId = $kommuneId; return $this; } /** * Get kommuneId * * @return integer */ public function getKommuneId() { return $this->kommuneId; } /** * @ManyToOne(targetEntity="Kommune") * @JoinColumn(name="kommune_id", referencedColumnName="id") **/ private $kommune; } 

Может кто-нибудь объяснить, как эти таблицы объединяются в Symfony 2? Я ценю все виды помощи!

Вы должны выбрать правильное картографирование ассоциации доктрины в зависимости от отношения, которое вы хотите между этими объектами.

Другие ссылки, полезные для чтения для вас:

  • сущности-отношения-ассоциации из Книги Симфонии.
  • Затем Рецепты о Доктрине из Поваренной книги Симфонии.

Обновление на основе комментариев и редактирования сообщений:

Отношение OneToMany – ManyToOne может быть однонаправленным :

 <?php namespace AppBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * Aktiviteter */ class Aktiviteter { /** * @var integer */ private $id; /** * @var string */ private $name; /** * Get id * * @return integer */ public function getId() { return $this->id; } /** * Set name * * @param string $name * @return Aktiviteter */ public function setName($name) { $this->name = $name; return $this; } /** * Get name * * @return string */ public function getName() { return $this->name; } /** * @ManyToMany(targetEntity="Kommune") * @JoinTable(name="kommunes") **/ private $kommunes; } 

Или двунаправленный :

Как сделал @ Isa Bek ответ

ПРИМЕЧАНИЕ . При сопоставлении двунаправленных ассоциаций важно понимать концепцию владения и обратной стороны и помнить, что вам не нужно устанавливать идентификатор объекта отношения, потому что Doctrine обрабатывает это автоматически, как вы увидите после того, как сопоставление будет применяться с команда: $ php app/console doctrine:schema:update --force с вашей консоли.

Я полагаю, вы хотите использовать отношения один-много между объектами Kommune и Aktiviteler . В объекте Kommune.php:

 /** * Kommune * * @ORM\Table() * @ORM\Entity */ class Kommune { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @ORM\OneToMany(targetEntity="Aktiviteter", mappedBy="kommune") */ private $aktiviteler; /** * Other fields */ } 

В объекте Aktiviteter.php

 /** * Aktiviteter * * @ORM\Table() * @ORM\Entity */ class Aktiviteter { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @ORM\ManyToOne(targetEntity="Kommune", inversedBy="aktiviteler") * @ORM\JoinColumn(name="kommune_id", referencedColumnName="id") */ private $kommune; /** * Other fields */ } 

Я думаю, эти коды были бы полезны для вас.