繁体   English   中英

在带有Doctrine2的Symfony2上,Object = Entity吗?

[英]On Symfony2 with Doctrine2, does Object = Entity?

假设我有一个User类:

$user = new User(1);
$user->setName('Bob'); // save "bob" to database with ID 1
$user->setGender('Male'); // save "male" to database with ID 1

echo $user->getName(); // display bob
echo $user->getGender(); // display "male";

echo $user->getDesignation() // display "Mr. Bob"

现在,在Symfony2中,使用Doctrine2,似乎Entity是一个用于与数据库建立链接的对象。 所以我认为所有的setName()setGender()getName()getGender()函数都应该放在Bundle的Entity目录中的文件中(因为那些函数来自数据库的UPDATE或SELECT数据)。

但是getDesignation()呢?

public function getDesignation() {
  if ($this->getGender() == 'Male') return "Mr. ".$this->getName();
  else return "Ms. ".$this->getName();
}

可以在实体中放置一个与数据库完全没有链接的函数吗? 这不是一个坏习惯吗?

可以放置一个绝对没有与数据库链接的功能吗?

是的,没关系。 但仔细观察,它仍然在某种程度上与数据库“链接”,因为它利用了最初来自持久层(数据库)的性别和名称数据。

这不是一个坏习惯吗?

这根本不是不好的做法,事实上它是非常有用的。 它可以帮助您在模型对象中使用持久层,同时将代码与数据库访问分离。

如果您的页面始终以英语显示,如果您需要将网站翻译成另一种语言,那么它可以工作,也许您应该创建一个额外的类来处理Symfony翻译器和实体以获得多语言标题。 另一种更简单的方法是仅返回人名“先生”。 在一个单独的功能,如:

public function getDesignation() {
  if ($this->getGender() == 'Male') return "Mr." else return "Ms.";
}

因为您可以在模板{{entity.designation | trans}}中轻松转换它

无论如何我只是想贡献一点,但简短的回答是:是的,你可以使用实体处理超出基本吸气剂的超时尚方法

问候

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM