Php Laravel存储库存储映像名称不起作用

Php Laravel存储库存储映像名称不起作用,php,laravel,laravel-5.3,Php,Laravel,Laravel 5.3,我正在尝试创建一个用户配置文件,并使用laravel存储库将其存储到数据库中。 以下是我的控制器代码: <?php namespace App\Http\Controllers; use App\Http\Requests\UsercreateRequest; use App\Http\Requests\UserupdateRequest; use App\Repositories\UserRepository; use Illuminate\Http\Request; class

我正在尝试创建一个用户配置文件,并使用laravel存储库将其存储到数据库中。 以下是我的控制器代码:

<?php

namespace App\Http\Controllers;

use App\Http\Requests\UsercreateRequest;
use App\Http\Requests\UserupdateRequest;
use App\Repositories\UserRepository;
use Illuminate\Http\Request;

class UserController extends Controller
{

    protected $userRepository;
    protected $nbrPerPage=4;


    public function __construct(UserRepository $UserRepository)
    {
        $this->userRepository=$UserRepository;
    }

    public function index()
    {
        return view('signup');
        //
    }


    public function create()
    {
        return view('signup');
        //
    }

    public function store(UsercreateRequest $request)
    {

        $image =$request->file('image');
        if($request->hasFile('image'))
        {
            if($image->isValid())
            {

                $way=public_path('images');

                $extension=$image->getClientOriginalExtension();

                do
                {
                    $name=$image->getClientOriginalName();
                    //echo $name;
                }while(file_exists($way.'/'.$name));

                if($image->move($way,$name))
                {

                    echo'ok '; //75485205
                    //echo $name;
                    $user=$this->userRepository->store($request->all(), $request);
                    return redirect('dashboard')->withOk(" L'enrisgrement n'a pas abouti !");
                }

            }

        }
        return redirect('signup')->withOk(" L'enrisgrement n'a pas abouti !");
        //
    }

    public function show($id)
    {
        $user=$this->userRepository->getByid($id);

        return view('dashboard', compact('user'));
        //
    }

    public function edit($id)
    {
        $user=$this->userRepository->getByid($id);

        return view('dashboard', compact('user'));
        //
    }

    public function update(UserupdateRequest $request, $id)
    {
        $this->userRepository->update($id, $request->all());

        return view('dashboard');
        //
    }

    public function destroy($id)
    {
        $this->userRepository->destroy($id);
        return back();
        //
    }
}

将存储方法调用更改为此

$data = array_merge($request->all(), ['image' => $name]);
$user = $this->userRepository->store($data, $request);
PS:循环检查文件是否已经存在是无用的。如果已存在与上载文件同名的图像,则循环将永远不会结束

do {
    $name = $image->getClientOriginalName();
} while(file_exists($way.'/'.$name));

要解决此问题,您应该在此处加入一些随机名称生成器。

共享您的
用户存储库
存储
method@Sandeesh我刚刚编辑了我的代码,您正在处理存储库中的图像文件名。因此,无需从控制器传递值。那又是什么问题呢?谢谢!!!我将store调用更改为
$data=array\u-mer($request->all(),['image'=>$name];$user=$this->userRepository->store($data);
,现在可以使用了
$data = array_merge($request->all(), ['image' => $name]);
$user = $this->userRepository->store($data, $request);
do {
    $name = $image->getClientOriginalName();
} while(file_exists($way.'/'.$name));