Как расширить абстрактный класс модели поставщика в сущность

основываясь на способе сделать это из FOSUserbundle, я сделал пакет поставщика, который содержит класс Analytic Abstrakt, чем реализует AnalyticInterface, и в src/AppBundle у меня есть аналитический объект, который расширяет абстрактный класс поставщика Analytic, но это не не работает, моя сущность не использует свойства абстрактного класса ($ referer, $host, $ip, $browser,...)

Интерфейс:

  <?php
/**
 * Created by PhpStorm.
 * User: VanIllaSkyPE
 * Date: 01/11/2016
 * Time: 23:26
 */

namespace Gkratz\AnalyticBundle\Model;


/**
 * Interface AnalyticInterface
 * @package Gkratz\AnalyticBundle\Model
 */
interface AnalyticInterface
{
    /**
     * Set date
     *
     * @param \DateTime $date
     * @return Analytic
     */
    public function setDate($date);

    /**
     * Get date
     *
     * @return \DateTime
     */
    public function getDate();

    /**
     * Set page
     *
     * @param string $page
     * @return Analytic
     */
    public function setPage($page);

    /**
     * Get page
     *
     * @return string
     */
    public function getPage();

    /**
     * Set ip
     *
     * @param string $ip
     * @return Analytic
     */
    public function setIp($ip);

    /**
     * Get ip
     *
     * @return string
     */
    public function getIp();

    /**
     * Set host
     *
     * @param string $host
     * @return Analytic
     */
    public function setHost($host);

    /**
     * Get host
     *
     * @return string
     */
    public function getHost();

    /**
     * Set browser
     *
     * @param string $browser
     * @return Analytic
     */
    public function setBrowser($browser);

    /**
     * Get browser
     *
     * @return string
     */
    public function getBrowser();

    /**
     * Set referer
     *
     * @param string $referer
     * @return Analytic
     */
    public function setReferer($referer);

    /**
     * Get referer
     *
     * @return string
     */
    public function getReferer();

    /**
     * Set newSession
     *
     * @param boolean $newSession
     * @return Analytic
     */
    public function setNewSession($newSession);

    /**
     * Get newSession
     *
     * @return boolean
     */
    public function getNewSession();
}

Базовый абстрактный класс:

<?php

/**
 * Created by PhpStorm.
 * User: VanIllaSkyPE
 * Date: 01/11/2016
 * Time: 22:30
 */

namespace Gkratz\AnalyticBundle\Model;

/**
 * Class Analytic
 * @package Gkratz\AnalyticBundle\Model
 */
abstract class Analytic implements AnalyticInterface
{
    protected $id;

    /**
     * @var \DateTime
     */
    protected $date;

    /**
     * @var string
     */
    protected $page;

    /**
     * @var string
     */
    protected $ip;

    /**
     * @var string
     */
    protected $host;

    /**
     * @var string
     */
    protected $browser;

    /**
     * @var string
     */
    protected $referer;

    /**
     *
     * @var boolean
     */
    protected $newSession;



    public function __construct()
    {
        $this->date = new \Datetime();
    }


    /**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set date
     *
     * @param \DateTime $date
     * @return Analytic
     */
    public function setDate($date)
    {
        $this->date = $date;

        return $this;
    }

    /**
     * Get date
     *
     * @return \DateTime
     */
    public function getDate()
    {
        return $this->date;
    }

    /**
     * Set page
     *
     * @param string $page
     * @return Analytic
     */
    public function setPage($page)
    {
        $this->page = $page;

        return $this;
    }

    /**
     * Get page
     *
     * @return string
     */
    public function getPage()
    {
        return $this->page;
    }

    /**
     * Set ip
     *
     * @param string $ip
     * @return Analytic
     */
    public function setIp($ip)
    {
        $this->ip = $ip;

        return $this;
    }

    /**
     * Get ip
     *
     * @return string
     */
    public function getIp()
    {
        return $this->ip;
    }

    /**
     * Set host
     *
     * @param string $host
     * @return Analytic
     */
    public function setHost($host)
    {
        $this->host = $host;

        return $this;
    }

    /**
     * Get host
     *
     * @return string
     */
    public function getHost()
    {
        return $this->host;
    }

    /**
     * Set browser
     *
     * @param string $browser
     * @return Analytic
     */
    public function setBrowser($browser)
    {
        $this->browser = $browser;

        return $this;
    }

    /**
     * Get browser
     *
     * @return string
     */
    public function getBrowser()
    {
        return $this->browser;
    }

    /**
     * Set referer
     *
     * @param string $referer
     * @return Analytic
     */
    public function setReferer($referer)
    {
        $this->referer = $referer;

        return $this;
    }

    /**
     * Get referer
     *
     * @return string
     */
    public function getReferer()
    {
        return $this->referer;
    }

    /**
     * Set newSession
     *
     * @param boolean $newSession
     * @return Analytic
     */
    public function setNewSession($newSession)
    {
        $this->newSession = $newSession;

        return $this;
    }

    /**
     * Get newSession
     *
     * @return boolean
     */
    public function getNewSession()
    {
        return $this->newSession;
    }
}

аналитическая сущность приложения:

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Gkratz\AnalyticBundle\Model\Analytic as BaseAnalytic;

/**
 * Analytic
 *
 * @ORM\Table(name="analytic")
 * @ORM\Entity(repositoryClass="AppBundle\Repository\AnalyticRepository")
 */
class Analytic extends BaseAnalytic
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;


    /**
     * Get id
     *
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    public function __construct()
    {
        parent::__construct();
    }
}

Спасибо за любой ответ


person Jul6art    schedule 06.11.2016    source источник


Ответы (1)


Абстрактный класс Analytic определяет только свойства.

Analytic необходимо аннотировать их с помощью @ORM\Column(...), если вы хотите использовать их в качестве столбцов БД.

См. также: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html

person martin    schedule 06.11.2016
comment
ДЕЙСТВИТЕЛЬНО БОЛЬШОЕ СПАСИБО ЧЕЛОВЕК, это была проблема, СПАСИБО СПАСИБО СПАСИБО - person Jul6art; 06.11.2016