2015-02-12 41 views
1

我有一個包含許多方法的模型。Laravel與構造函數的雄辯問題

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(); 

請輸入任何內容?

回答

3

嗯,是因爲你重寫了Eloquent構造函數,它負責在數組通過時用值填充模型。你必須通過他們對家長與parent::__construct()

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

非常感謝你。錯過了它完全。 – Chandra 2015-02-12 07:27:09

0

你的模型的構造函數不接受任何參數 - 空(),和你在你的控制器創建的usermodel的新實例添加$inputall作爲參數。

嘗試根據這個重構你的構造器:

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

(基於other Eloquent contructor question答案)