我有一个模型的构造函数有问题。我使用 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