Всем привет, может кто посоветует где правильней/лучше разместить логику когда есть несколько сущностей (Doctrine entity) которые имплеменируют общий интерфейс?
Ситуация такая, есть интерфейс Request:
<?php
namespace AppBundle\Entity;
interface Request
    public function approve();
    public function reject();
}
и несколько сущьностей: Invite и JoinRequest в первом компания приглашает человека в компанию, во втором наоборот.
Пример Invite:
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/** @ORM\Entity */
class Invite implements Request
{
    /**
     * @ORM\Column(type="integer") @ORM\Id @ORM\GeneratedValue
     * @var int
     */
    private $id;
    /**
     * @ORM\ManyToOne(targetEntity="Company")
     * @ORM\JoinColumn(nullable=false)
     * @var Company
     */
    private $company;
    /**
     * @ORM\ManyToOne(targetEntity="User")
     * @ORM\JoinColumn(nullable=false)
     * @var User
     */
    private $user;
    public function approve()
    {
        // Some logic here. Add user to company, send mail, add flash message etc...
    }
    public function reject()
    {
        // Same
    }
    // Getters/Setters.
}
также будут и другие типы сущностей (запрос на обмен контактами и т.д.)
Насколько я понял размещать какую либо бизнес логику в самих Doctrine Entity считаеться плохой практикой да и передавать зависимости в Entity (mailer, twig templating, flash messages) выглядит не очень красиво, в контроллере тоже, так что единственное что мне приходит в голову это выделить под все эти Request Entity отдельный сервис, или даже свой под каждый, но не убивает ли это весь смысл полиморфизма?