繁体   English   中英

在 laravel 中上传图像时数组到字符串转换 ErrorException

[英]Array to string conversion ErrorException while uploading image in laravel 7

我使用 3 arrays 存储在表课程中。 请帮助我将数组保存在字符串中或将数组保存在数据库中......我的数组问题:

  • 我无法在数据库中存储和保存图像

  • 我无法在数据库中保存数组结果和要求

<div class="col-md-10"><input type="file" class="form-control" name="images" id="images" ></div>
    //and this 
<input type="text" class="form-control" name="outcomes[]" id="outcomes">
    //or this
<input type="text" class="form-control" name="requirements[]" id="requirements">

我的商店 function 致电:

public function store(CourseRequest $request)
{
    $imageUrl = $this->upload2Images($request->file('images'));

    auth()->user()->course()->create( 
        $request->except(['_token','files']),
        ['images'=>$imageUrl]);

    return redirect(route('courses.index'));
}

upload2Images()

public function upload2Images($file)
    {
        $year = Carbon::now()->year;
        $month = Carbon::now()->month;
        $imagePath = "upload/images/{$year}/{$month}/";
        $filename = $file->getClientOriginalName();
        $file = $file->move(public_path($imagePath), $filename);
        $url['images'] = "upload/images/{$year}/{$month}/$filename";
        return $url;
    }

当我使用

$data = array_merge(
            $request->except(['_token','files','outcomes','requirements']),
            $images
        );
$id =  auth()->user()->course()->create($data)->id;

它工作正常,但结果和要求是我以这种方式隐藏的数组。 我可以通过这个 arguments 吗?

你在打电话:

    $url['images'] = "upload/images/{$year}/{$month}/$filename";
    return $url;

然后:

    $imageUrl = $this->upload2Images($request->file('images'));

所以$imageUrl是一个数组。 但是保存记录的代码期望它是一个字符串。

`...->create( $request->except(['_token','files']),['images'=>$imageUrl]);`

此外,当它只需要一个时,您似乎传递了 2 个参数来create

也许你的意思是调用类似下面的东西?

$images = $this->upload2Images($request->file('images'));
$data = array_merge($request->except(['_token','files']), $images);
auth()->user()->course()->create($data);

解决了,谢谢我在 model 中使用

protected $casts = [
        'images' => 'array',
        'requirements' => 'array',
        'outcomes' => 'array',
    ];

和 controller 使用这个

   $images = $this->upload2Images($request->file('images'));
        $requirements = $request->requirements;
        $outcomes = $request->outcomes;

        $data = array_merge($request->except(['_token']), ['images'=>$images],['requirements'=>$requirements],['outcomes'=>$outcomes]);
        $id =  auth()->user()->course()->create($data)->id;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM