我有两张桌子:
CREATE TABLE server (
serverId INT
)
CREATE TABLE resource (
resourceId INT AUTO_INCREMENT NOT NULL,
serverId INT NOT NULL
)
ALTER TABLE resource ADD FOREIGN KEY (serverId) REFERENCES server(serverId);
在我的server
实体中,我想getResourceList()
返回资源实体列表。
对此有什么正确的注释,为什么?
由于
答案 0 :(得分:0)
我想您希望将Doctrine2与PHP注释一起使用。您的表可以按如下方式重写:
带有注释的服务器类:
/**
* @Id @Column(type="integer")
* @GeneratedValue
*/
private $id;
/**
* @var Doctrine\Common\Collections\ArrayCollection
* @OneToMany(targetEntity="Resource", mappedBy="server")
*/
private $resources;
public function getId() {
return $this->id;
}
public function getResources() {
return $this->resources;
}
public function addResource(Resource $resource){
$this->resources->add($resource);
}
public function removeResource(Resource $resource){
$this->resources->removeElement($resource);
}
带有注释的资源类:
/**
* @Id @Column(type="integer")
* @GeneratedValue
*/
private $id;
/**
* @var Server
* @ManyToOne(targetEntity="Resource", inversedBy="resources")
*/
private $server;
public function getId() {
return $this->id;
}
public function getServer() {
return $this->server;
}
public function setServer(Server $server) {
$this->server = $server;
}
有一个"一对多"服务器端的关联,因为您将许多资源映射到一台服务器。在这种关系的另一边 - 逻辑上 - 必须有一个多对一的"协会。
现在,在调用$server->getResources()
方法之后,您将获得关联资源实体的ArrayCollection。