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

Любые входы, пожалуйста?

1

Решение

Ну да, это потому, что вы переопределяете конструктор Eloquent, который отвечает за заполнение модели значениями при передаче массива. Вы должны передать их родителю с parent::__construct():

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

Другие решения

Конструктор вашей модели не принимает никаких параметров — пусто (), и вы создаете новый экземпляр UserModel в вашем контроллере, добавляя $inputall в качестве параметра.

Попробуйте реорганизовать ваш конструктор в соответствии с этим:

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

(Ответ основан на Другой красноречивый вопрос о конструкторе)

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector