只是想知道是否有一种简单的方法可以在逐个实例的基础上自动填充对象的相关字段,而不是在配置文件中全局自动填充,或者对于整个类。
我想包含单个实例的所有相关模型,而不会链接大量的include_related()
函数。
这样的事情会很好:
$x = new Model();
$x->include_all_related();
答案 0 :(得分:1)
以为我必须弄脏我的核心。无论出于何种原因,我都没有想到我可以访问$has_many
和$has_one
数组。
解决方案很简单:
class Model extends Datamapper{
var $has_one = array('foo', 'bar', 'baz');
var $table = 'models';
function __construct($id = NULL){
parent::__construct($id);
}
function include_all_related(){
foreach($this->has_one as $h){
$this->include_related($h['class']);
}
return $this;
}
}
您可能想知道为什么我在class
变量中使用$h
键。在引擎盖下,Datamapper ORM也会跟踪其他一些键,作为更大阵列的一部分。如果您致电print_r($h)
,则可以看到它们。 class
密钥会跟踪foo
,bar
和baz
。
答案 1 :(得分:0)
您可以在关系定义上启用它,如果您想要在特定实例上,则需要在运行时更改该实例的关系配置。