0

我有一个模型的构造函数有问题。我使用 Laravel-3 和 Eloquent ORM。

这是我期望的行为:

Class A{
    $dat_var = 1;
    public function __construct{
        $this->dat_var = 2;
    }
}

Class B extends A{
    public function __construct{
        echo 'before : '.$var;
        parent::__construct();
        echo 'after: '.$var;
    }
}

Class Test{
    public function myTestMethod2(){
        $b = new B();
    }
}

myTestMethod1() 的结果:

before : 1
after : 2

但是对于我扩展了 Eloquent 的 Laravel 对象,在对象完成构建之前,该变量是未设置的。我想这与我在 Eloquent 模型中需要的变量是从数据库加载的事实有关。但无论如何,是否有任何优雅的解决方法或者我做错了什么

这是我的数据库表:

--------------
-table_c     -
--------------
-id  | my_var-
--------------
-1   | 5     -
--------------

这是我的 laravel 代码:

Class C extends Eloquent{
    public static $table = 'table_c';

    public function __construct{
        //Usefull things here
        parent::__construct();
        echo 'In construct : '.$this->my_var;
    }
}

Class Test{
    public function myTestMethod2(){
        $c = C::find('1');
        echo 'Construct finish : '.$c->my_var
    }
}

myTestMethod2() 的结果:

In construct :
Construct finish : 5

我对 myTestMethod2() 的期望:

In construct : 5
Construct finish : 5
4

0 回答 0