Laravel雄辩的构造函数问题

时间:2015-02-12 07:13:49

标签: php laravel constructor eloquent

我有一个包含许多方法的模型。

class UserModel extends Eloquent{

    private $active;

    function __construct() {        
    $this->active = Config::get('app.ActiveFlag');
    }

    protected $table = 'User';
    protected $fillable = array('usr_ID', 'username');

    public function method1(){
      //use $active here
    }

    public function method2(){
      //use $active here
    }

}

控制器:

$user = new UserModel($inputall);
$user->save();

没有构造函数,它工作正常。但是,使用构造函数时,它不会保存用户(生成的查询没有任何填充属性或值)。查询如下:

 insert into User() values();

请输入任何内容?

2 个答案:

答案 0 :(得分:3)

是的,那是因为你覆盖了Eloquent构造函数,它负责在传递数组时用值填充模型。您必须使用parent::__construct()将其传递给父级:

public function __construct(array $attributes = array()){
    parent::__construct($attributes);
    $this->active = Config::get('app.ActiveFlag');
}

答案 1 :(得分:0)

您的模型的构造函数不接受任何参数 - 空(),并且您正在控制器中创建新的UserModel实例,并添加$inputall作为参数。

尝试根据这个重构你的构造函数:

class UserModel extends Eloquent {
    public function __construct($attributes = array())  {
        parent::__construct($attributes);
        // Your additional code here
    }
}

(基于other Eloquent contructor question的答案)