У меня есть модель, которая, похоже, не может быть назначена массой, хотя я заполнил поля, $fillable
:
class LoginAttempt extends Eloquent { protected $table = 'login_history'; protected $fillable = array('remote_addr', 'user_agent', 'successful'); public function user() { return $this->belongsTo('User'); } }
Что использует эту схему:
Когда я массой назначаю экземпляр с этими переменными,
$vars = array( 'remote_addr' => $_SERVER['REMOTE_ADDR'], 'user_agent' => $_SERVER['HTTP_USER_AGENT'], 'successful' => false, ); print_r($vars); => array('remote_addr' => '127.0.0.1', 'user_agent' => 'Moz..', 'successful' => false); new LoginAttempt($vars); => LoginAttempt instance, attributes => array() LoginAttempt::create($vars); => LoginAttempt instance, attributes => array() $login = new LoginAttempt; $login->fill($vars); => LoginAttempt instance, attributes => array() $login = new LoginAttempt; $login->remote_addr = $vars['remote_addr']; $login->user_agent= $vars['user_agent']; $login->successful= $vars['successful']; => LoginAttempt instance, attributes => array('remote_addr' => '..', 'user_agent' => '..', 'successful' => false)
Я думаю, что я использую $fillable
как описано в документах – почему в этом случае не работает массовое задание?
Оказывается, это была ошибка в Laravel ( исправлена ) – все поля охраняются по умолчанию ( protected $guarded = array('*');
), который тогда имел приоритет над $fillable
.