对不起这个非常糟糕的头衔。
我有一个对象类,以及一个用于获取所有对象的objectManager类。 (这是一个例子)。
我可以用new Object($id);
如果存在id参数,则对象进行sql查询并使用数据填充自己。
我想创建一个包含所有对象的表格,显示它们的值。
我应该使用objectManager类来创建一个大的SQL查询,它将返回我需要的所有内容,或者juste获取一个id列表,然后在循环中单独加载每个对象?
我认为只进行一次查询会更好,但使用第二种解决方案时代码更容易阅读。
你最喜欢的方法是什么?
谢谢
答案 0 :(得分:0)
您应该只有一个查询,然后使用相关数据对对象进行水合,而不必传递ID。您可以实现Hydrate或exchangeArray方法:
示例:
public function exchangeArray(array $data){
$this->property1=$data['property1'];
$this->property2=$data['property2'];
$this->property3=$data['property3'];
return $this;
}
修改强>
您也可以在Object构造函数中处理它:
public function __construct($argument){
if(is_numeric($argument)){
//treat as ID
return $this->findById($argument);
}elseif(is_array($argument)){
//hydrate object without call to DB
return $this->exchangeArray($argument);
}
}
您可能需要查看提供现成对象关系映射器层的Doctrine项目:
http://www.doctrine-project.org/projects/orm.html
另见Repository模式: