2013-03-27 3 views
0

Я только что обновил L4 (оба скелета и пакеты) до последней версии.Laravel 4 - Ярко-массовое назначение создает пустые записи после обновления

Теперь, когда я пытаюсь создать новый экземпляр одной из моделей и сохранить его в БД, я получаю пустую запись, за исключением временных меток и первичного ключа.

Это поведение сохраняется во всех моделях (пользователи, ставки, проекты и т. Д.), Поэтому это не является локальной проблемой.

Я попытался как

Project::create($project); 

и, following this thread:

$new_project = new Project; 

$new_project->fill($project); 

$new_project->save(); 

Но результат тот же: пустой записи.

ответ

5

Итак, как это получается из docs Массовое присвоение по умолчанию заблокировано по соображениям безопасности (например, выборка всех данных из формы без указания полей (Input::all()) и сохранение ее как есть в БД может привести к нежелательным полей, если клиент манипулирует формой, добавив поле с именем, соответствующим полю в БД).

Для обозначения полей, которым разрешено быть назначены, нужно либо явно добавлять поля в вопросе как белого списка к защищенному $fillable массива на модели, или, наоборот, создать черный список используя $guarded массив

+0

Для реализации этого пут защищен $ Fillable = массив(); в вашей модели. – malhal

0

я столкнулся с той же проблемой и нашел решение надежду помочь другим

$new_project = new Project; 

$new_project->unguard(); 

$new_project->create($project); 

$new_project->reguard(); 


or 

Project::unguard(); 
$new_project = Project::create($project); 
$new_project->reguard(); 
+0

Используйте атрибут protected/fillable, вы полностью удалили защиту массового назначения здесь! –

+0

Да, теперь я следую за охраняемыми/заполняемыми атрибутами, так как вы можете увидеть его старое сообщение. – umefarooq

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

  • Нет связанных вопросов^_^