2015-06-02 10 views
1

При попытке вставить новые данные в Laravel, я не могу вставить в базу 2 поля типа i.e и поставщика.Невозможно вставить все в базу данных с помощью laravel

Вот мой код:

$user = User::create([ 
    'name' => $userData->name, 
    'username' => $userData->name, 
    'email' => $userData->email, 
    'password' => 'asdffdas', 
    'type' => 'standard', 
    'provider' => $userData->id, 
    'active' => 1 
    ]); 

Если я эхо $userData->id, мне удалось получить действительное число, однако после установки на тип всегда первым enum в то время как поставщик всегда 0.

Любые идеи, почему это может произойти?

+0

Возможно, вы хотите использовать echo '$ user-> id', а не' $ userData-> id'? –

+0

является провайдером 'tinyint' случайно? – Augwa

ответ

3

Вы должны убедиться, что поля находятся в $ fillable = []; параметр вашей модели.

Массовое присвоение

При создании новой модели, вы передаете массив атрибутов в модели конструктора. Эти атрибуты затем присваиваются модели посредством присвоения массы. Это удобно; тем не менее, может быть серьезной проблемой безопасности при слепом передаче пользовательского ввода в модель. Если пользовательский ввод слепо передается в модель, пользователь может изменять любые атрибуты модели. По этой причине все модели Eloquent по умолчанию защищают от массового присвоения.

To get started, set the fillable or guarded properties on your model. 

Defining Fillable Attributes On A Model 

The fillable property specifies which attributes should be mass-assignable. This can be set at the class or instance level. 

class User extends Eloquent { 

    protected $fillable = array('first_name', 'last_name', 'email'); 

} 
Смежные вопросы