Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CodeIgniter-Datamapper ORM-Autopopulate实例_Codeigniter_Codeigniter Datamapper - Fatal编程技术网

CodeIgniter-Datamapper ORM-Autopopulate实例

CodeIgniter-Datamapper ORM-Autopopulate实例,codeigniter,codeigniter-datamapper,Codeigniter,Codeigniter Datamapper,只是想知道是否有一种简单的方法可以逐个实例自动填充对象的相关字段,而不是在配置文件中全局填充,或者对于整个类 我希望包含单个实例的所有相关模型,而不必链接大量的include\u related()函数。 像这样的东西会很好: $x = new Model(); $x->include_all_related(); 我想我得把手弄脏。无论出于何种原因,我没有想到我可以访问$has\u many和$has\u one数组 解决方案很简单: class Model extends Datam

只是想知道是否有一种简单的方法可以逐个实例自动填充对象的相关字段,而不是在配置文件中全局填充,或者对于整个类

我希望包含单个实例的所有相关模型,而不必链接大量的
include\u related()
函数。 像这样的东西会很好:

$x = new Model();
$x->include_all_related();

我想我得把手弄脏。无论出于何种原因,我没有想到我可以访问
$has\u many
$has\u 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;
    }
}

您可能想知道为什么我要在
$h
变量中使用
class
键。在引擎罩下,DataMapperORM还跟踪其他一些键,作为更大阵列的一部分。如果您调用
print\r($h)
,您可以看到它们。
class
键跟踪
foo
bar
baz

认为我必须把手伸进核心。无论出于何种原因,我没有想到我可以访问
$has\u many
$has\u 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;
    }
}

您可能想知道为什么我要在
$h
变量中使用
class
键。在引擎罩下,DataMapperORM还跟踪其他一些键,作为更大阵列的一部分。如果您调用
print\r($h)
,您可以看到它们。
class
键跟踪
foo
bar
baz
您可以在关系定义上启用它,如果您想在特定实例上启用它,您需要在运行时更改该实例的关系配置。

您可以在关系定义上启用它,如果您想在特定实例上使用,则需要在运行时更改该实例的关系配置。

我认为DataMapper没有任何内置函数。您只需将
include_all_related()
函数添加到模型中,即可省去反复编写代码的麻烦?谢谢@froddd-是的,这就是我现在采用的方法-但这意味着当我创建一个新模型并填写它的关系时(
$has_many()
$has_one()
),我还必须进入
include_all_related()
功能,并在那里进行调整。我也问过了。我们的解决方案是一个临时的解决方案,当我不忙的时候,如果我没有得到答案,我会深入核心并自己创建一个方法:实际上,如果我只是阅读
$has\u one
$has\u many
数组,我就不必一直更改
include\u all\u related()
函数。脸掌。请参阅下面的解决方案。我认为DataMapper没有任何内置的功能。您只需将
include_all_related()
函数添加到模型中,即可省去反复编写代码的麻烦?谢谢@froddd-是的,这就是我现在采用的方法-但这意味着当我创建一个新模型并填写它的关系时(
$has_many()
$has_one()
),我还必须进入
include_all_related()
功能,并在那里进行调整。我也问过了。我们的解决方案是一个临时的解决方案,当我不忙的时候,如果我没有得到答案,我会深入核心并自己创建一个方法:实际上,如果我只是阅读
$has\u one
$has\u many
数组,我就不必一直更改
include\u all\u related()
函数。脸掌。请参阅下面的解决方案。