Как можно реализовать такой функционал?

Есть две сущности Book - бронирование
и Extra - дополнительные услуги
когда человек бронирует такси, он может выбрать дополнительные услуги
например
Встречать с табличкой: 5долл
Захватить бутерброд: 10долл :)
Поднести сумки: 50долл
к одному бронированию можно подключить несколько услуг

в форме это дело должно выглядеть как список Extra с чекбоксами
человек видит название услуги и цену - отмечает чекбокс и пркрепляется таким образом дополнительная услуга к бронированию

как правильно можно реализовать это функционал? бьюсь несколько дней не выходит
пробовал
/**
* Many Book have Many Extra.
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Extra")
* @ORM\JoinTable(name="book_extra",
* joinColumns={@ORM\JoinColumn(name="book_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="extra_id", referencedColumnName="id")}
* )
*/
не выходит или руками нужно создать промежуточную сущность

/**
 * Book
 *
 * @ORM\Table(name="book")
 * @ORM\Entity(repositoryClass="AppBundle\Repository\BookRepository")
 */
class Book
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\ManyToMany(targetEntity="AppBundle\Entity\Extra")
     */

    private $extras;


    public function __construct()
    {
        $this->extras = new ArrayCollection();
    }
}


/**
 * Extra
 *
 * @ORM\Table(name="extra")
 * @ORM\Entity(repositoryClass="AppBundle\Repository\ExtraRepository")
 */
class Extra
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="title", type="string", length=255, unique=true)
     */
    private $title;


    /**
     * @var int
     *
     * @ORM\Column(name="summ", type="integer")
     */
    private $summ;
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы