php - 在 Laravel 中使用 Mass Assignment 将变量从 Controller 传递到模型

标签 php mysql laravel mass-assignment

我是 Laravel 的新手。

我要在 Laravel 中上传图片我使用 Intervention Image这是我的 Controller :

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 变量保存在citiesimage 字段

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

但是我的数据库中的图像充满了上传文件的临时名称: enter image description here

最佳答案

只需覆盖 $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');

关于php - 在 Laravel 中使用 Mass Assignment 将变量从 Controller 传递到模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27967281/

相关文章:

php - 此代码中的变量可见性错误是什么?

php - 如果不从一个表中选择,则检查任一表上是否存在数据

PHP 解码 JSON POST

sql - MySQL查询以逗号分隔的字符串查找值

mysql - SQL函数从同一列中获取1条静态记录和5条随机记录

laravel - 如何在 laravel 中将本地服务器移动到实时服务器

php - 任何人都可以使用 json_encode 和 json_decode 解释这段 PHP 代码吗?

mysql - 如果预计数据库表以后会增加更多列,那么将这些列保留为另一个表的行是否是好的设计?

mysql - Eloquent 中的 orWhere 具有多个条件

javascript - 遇到两个具有相同 key `1` 的 child 。 key 应该是唯一的,以便组件在更新时保持其身份。 Laravel React JS