在 Laravel 中使用 Mass Assignment 将变量从控制器传递到模型
passing an variable from controller to model with Mass Assignment in Laravel
我是 Laravel 的新人。
我要在 Laravel 中上传图像 我使用 Intervention Image 这是我的 控制器:
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。
我需要 $image 变量保存在 cities table image字段
if(Image::make($image_temp->getRealPath())->save('public/up/city/'.$name)){
$image='public/up/city/'.$name;
}
但是我的数据库中的图像填充了上传文件的临时名称:
只需覆盖 $data
数组中的值:
$data['image'] = 'public/up/city/'.$name;
如果你这样做
$image = 'public/up/city/'.$name;
...您将值存储在局部变量中,但没有任何反应。您数据库中的值来自 "original" $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');
我是 Laravel 的新人。
我要在 Laravel 中上传图像 我使用 Intervention Image 这是我的 控制器:
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。
我需要 $image 变量保存在 cities table image字段
if(Image::make($image_temp->getRealPath())->save('public/up/city/'.$name)){
$image='public/up/city/'.$name;
}
但是我的数据库中的图像填充了上传文件的临时名称:
只需覆盖 $data
数组中的值:
$data['image'] = 'public/up/city/'.$name;
如果你这样做
$image = 'public/up/city/'.$name;
...您将值存储在局部变量中,但没有任何反应。您数据库中的值来自 "original" $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');