передача переменной из контроллера в модель с помощью Mass Assignment в Laravel

Я новичок в Ларавеле.

Я собираюсь загрузить изображение в Laravel, который я использую Изображение вмешательства а это мой контроллер:

public function store()
{
$validator = Validator::make($data = Input::all(), City::$rules);
if ($validator->fails())
{
return Redirect::back()->withErrors($validator)->withInput();
}
$image_temp=Input::file('image');
$name = Input::file('image')->getClientOriginalName();
if(Image::make($image_temp->getRealPath())->save('public/up/city/'.$name)){
$image='public/up/city/'.$name;
}
City::create($data);
return Redirect::route('siteadmin.cities.index');
}

А это мой модель:

class City extends \Eloquent {
protected $primaryKey='city_id';
protected $fillable = ['name', 'parent_id', 'english_name','population','phone_prefix','image'];
}

А это мой маршрут:

Route::resource('cities', 'CitiesController');

все работает хорошо, но я не знаю, как отправить переменную в качестве специального поля в Mass Assignment.

я нуждаюсь $ изображения переменная для сохранения в города Таблица образ поле

if(Image::make($image_temp->getRealPath())->save('public/up/city/'.$name)){
$image='public/up/city/'.$name;
}

Но изображение в моей базе данных заполнено временным именем загруженного файла:
введите описание изображения здесь

1

Решение

Просто переопределите значение в $data массив:

$data['image'] = 'public/up/city/'.$name;

Если вы делаете

$image = 'public/up/city/'.$name;

… Вы сохраняете значение в локальной переменной, но с ним ничего не происходит. Значение в вашей БД происходит от «оригинала» $dataДанные формы. Это временный путь к загруженному файлу. Вам нужно изменить это, чтобы Laravel заполнил новое значение в БД.


А вот (почти) полный код, чтобы избежать путаницы:

$validator = Validator::make($data = Input::all(), City::$rules);
if ($validator->fails())
{
return Redirect::back()->withErrors($validator)->withInput();
}
$image_temp=Input::file('image');
$name = Input::file('image')->getClientOriginalName();
if(Image::make($image_temp->getRealPath())->save('public/up/city/'.$name)){
$data['image'] = 'public/up/city/'.$name;
}
City::create($data);
return Redirect::route('siteadmin.cities.index');
1

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

Других решений пока нет …

По вопросам рекламы [email protected]