我需要通过'type'列值将ACTIVITY表连接到特定的表(例如:teamEvent,projectEvent等)。
我的选择:
$activity = $this
->getDoctrine()
->getRepository('TaskerWebBundle:Activity')
->findAll();
在$ activity数组中,我有一个具有属性的对象:ID(null)STATUS(字符串),TEAM(obj),USER_TRIGGER(obj)但缺少TYPE(字符串)和USER(obj) - 来自Activity实体。我如何访问这个属性?
如果我使用$activity->getType()
,则返回NULL。
活动实体:
namespace Tasker\WebBundle\Entity;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
/**
* Activity
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Tasker\WebBundle\Entity\ActivityRepository")
*
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap({"team" = "TeamEvents"})
*/
class Activity
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="activities")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $user;
/**
* @var \DateTime $created
*
* @Gedmo\Timestampable(on="create")
* @ORM\Column(type="datetime")
*/
private $created;
/**
* @var \DateTime $updated
*
* @Gedmo\Timestampable(on="update")
* @ORM\Column(type="datetime")
*/
private $updated;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set type
*
* @param string $type
* @return Activity
*/
public function setType($type)
{
$this->type = $type;
return $this;
}
/**
* Get type
*
* @return string
*/
public function getType()
{
return $this->type;
}
/**
* Set user
*
* @param User $user
* @return Activity
*/
public function setUser(User $user)
{
$this->user = $user;
return $this;
}
/**
* Get user
*
* @return integer
*/
public function getUser()
{
return $this->user;
}
public function getCreated()
{
return $this->created;
}
public function getUpdated()
{
return $this->updated;
}
}
TeamEvents实体:
namespace Tasker\WebBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Tasker\WebBundle\Entity\Activity;
/**
* TeamEvents
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Tasker\WebBundle\Entity\TeamEventsRepository")
*/
class TeamEvents extends Activity
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="Team", inversedBy="events")
* @ORM\JoinColumn(name="team_id", referencedColumnName="id")
*/
private $team;
/**
* @var string
*
* @ORM\Column(name="status", type="string", length=255)
*/
private $status;
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="teamEvents")
* @ORM\JoinColumn(name="user_trigger_id", referencedColumnName="id")
*/
private $userTrigger;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set team
*
* @param integer $team
* @return TeamEvents
*/
public function setTeam($team)
{
$this->team = $team;
return $this;
}
/**
* Get team
*
* @return integer
*/
public function getTeam()
{
return $this->team;
}
/**
* Set status
*
* @param string $status
* @return TeamEvents
*/
public function setStatus($status)
{
$this->status = $status;
return $this;
}
/**
* Get status
*
* @return string
*/
public function getStatus()
{
return $this->status;
}
/**
* Set userTrigger
*
* @param integer $userTrigger
* @return TeamEvents
*/
public function setUserTrigger($userTrigger)
{
$this->userTrigger = $userTrigger;
return $this;
}
/**
* Get userTrigger
*
* @return integer
*/
public function getUserTrigger()
{
return $this->userTrigger;
}
}
答案 0 :(得分:-1)
由于没有类型属性,您无法访问类型属性。那"键入"你所指的只是你的表中的一个字段,由Doctrine使用。你可以做的是实现一种方法,例如每个类中的getType()并返回相应的字符串。
class TeamEvents extends Activity{
public function getType(){
return 'team';
}
}
等等。