假设我的数据库中有2个表:课程和组。小组每年可以上1节课。
然后我将有2个实体,课程实体:
<?php
namespace Sifo\AdminBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
class Lesson
{
/**
* @var integer
*/
private $id;
/**
* @var string
*/
private $name;
/**
* Set id
*
* @param integer $id
* @return DftGrupMapel
*/
public function setId($id)
{
$this->id = $id;
return $this;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
和组实体:
<?php
namespace Sifo\AdminBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
class Group
{
/**
* @var integer
*/
private $id;
/**
* @var \Sifo\AdminBundle\Entity\MstLesson
*/
private $idLesson;
/**
* @var integer
*/
private $year;
/**
* Set id
*
* @param integer $id
* @return DftGrup
*/
public function setId($id)
{
$this->id = $id;
return $this;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set idLesson
*
* @param \Sifo\AdminBundle\Entity\MstLesson $idLesson
* @return DftGrup
*/
public function setIdLesson(\Sifo\AdminBundle\Entity\MstLesson $idLesson = null)
{
$this->idLesson = $idLesson;
return $this;
}
/**
* Get idGrup
*
* @return \Sifo\AdminBundle\Entity\MstGrup
*/
public function getIdLesson()
{
return $this->idLesson;
}
/**
* Set year
*
* @param integer $year
* @return DftGrup
*/
public function setYear($year)
{
$this->year = $year;
return $this;
}
/**
* Get year
*
* @return integer
*/
public function getYear()
{
return $this->year;
}
问题是,在群组实体中,我没有为__toString()
显示可用的字符串。我在组实体中创建新的name
字段并且在那里保存课程 name
时效果不佳。
lesson.id
和group.idLesson
是外键。
如何在课程实体中显示name
字段,以便在__toString()
组中显示,而无需创建新字段?
答案 0 :(得分:1)
这是一个ORM。您的Group
课程并不真正关心它与Lesson
id 相关的内容......它应该只有一个参考到Lesson
对象本身:
<?php
namespace Sifo\AdminBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
class Group
{
private $id; // An integer
private $lesson; // A Lesson object
private $year; // An integer, probably
$lesson
为Lesson
对象后,您可以在Group::__toString()
中引用它:
private function __toString() {
return $this->lesson->getName();
}
这里有关于关联映射的文档,这有助于映射Group
和Lesson
之间的关系:
http://docs.doctrine-project.org/en/2.0.x/reference/association-mapping.html
答案 1 :(得分:0)
public function setIdLesson(\Sifo\AdminBundle\Entity\MstLesson $idLesson = null)
{
$this->idLesson = $idLesson;
return $this;
}
在这里,您不需要return语句。