我的模型构造函数存在问题。我使用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模型中需要的变量是从DB加载的事实有关。但无论如何,是否有任何优雅的解决方案或我做错了什么?
这是我的数据库表:
--------------
-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