代码之家  ›  专栏  ›  技术社区  ›  Lluís Puig Ferrer

Laravel:更新数据而不再次选择文件

  •  1
  • Lluís Puig Ferrer  · 技术社区  · 8 年前

    我有一个名为projects的表,其中包含以下字段:

    表格信息

    创建视图

    <div id="formcreateproject">
            <form  enctype="multipart/form-data" id="myFormProject" name="myFormProject">
             <input type="hidden" name="_token" value="{{ Session::token() }}">
    
              <div class="form-group">
                <label name="title">Slug:</label>
                <input type="text" id="slug" name="slug" placeholder="ejemplo-de-slug" class="form-control form-control-sm"><br>
          <!--      <label name="order">Order:</label>
                <input type="number" id="order" name="order" class="form-control form-control-sm">-->
                <!--<label name="public">Public:</label>-->
                  <table>
                    <tr>
                      <td>
                          <img src="" id="img" class="img" style="width:100%;height:200px;background-color:#ccc;border:2px solid gray;" onerror="this.src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII='">
                          <input type="file" name="pathheader" id="pathheader"  class="form-control-file" aria-describedby="fileHelp" style="display:none;">
                      </td>
                      <td>
                          <img src="" id="img2" class="img2" style="width:100%;height:200px;background-color:#ccc;border:2px solid gray;" onerror="this.src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII='">
                          <input type="file" name="pathhome" id="pathhome" class="form-control-file" aria-describedby="fileHelp" style="display:none;"><br>
                      </td>
                    </tr>
                    <tr>
                      <td>
                          <input type="button" name="" value="Seleccionar header" id="browse_file" class="btn btn-danger form-control">
                      </td>
                      <td>
                          <input type="button" name="" value="Seleccionar home" id="browse_file2" class="btn btn-danger form-control">
                      </td>
                    </tr>
                  </table><br>
                <input type="submit" value="Crear Proyecto" id="createprojectsubmit" class="btn btn-danger btn-md">
                <br><br><br>
    
              </div>
            </form>
    
          </div>
    

    保存数据的函数

    函数如下所示:

     public function storeProject(Request $request)
            {
    
            $project = new Project();
            $project->slug = $request->input("slug");
            //$project->order = $request->input("order");
            $project->order = DB::table('projects')
                          ->where('order', DB::raw("(select max(`order`) from projects)"))
                          ->first()
                          ->order + 1; 
            $project->public = 0;
            $project->pathheader = $request->file('pathheader');
            $project->pathhome = $request->file('pathhome');
    
            \Storage::disk('projects')->makeDirectory($project->slug);
            \Storage::disk('projects')->putFileAs($project->slug,$project->pathheader,'header.jpg');
            \Storage::disk('projects')->putFileAs($project->slug,$project->pathhome,'home.jpg');
            $project->save();
            }
    

    查看以更新数据

    <div class="form-group">
                    <label><strong>Slug</strong></label>
                      <textarea type="text" class="form-control form-control-sm" id="slug" name="slug" rows="1" required style="resize:none;">{{$project->slug}}</textarea>
                  </div>
    
                      <div class="form-group">
                          <label><strong>Order</strong></label>
                          <textarea type="number" class="form-control form-control-sm" id="order" name="order" rows="1">{{$project->order}}</textarea>
                    </div>
    
                <div class="form-group">
                    <label><strong>Public</strong></label>
                    <textarea type="text" class="form-control form-control-sm" id="public" name="public" value="" rows="1">{{$project->public}}</textarea>
                </div>
    
                <div class="form-group">
               <table>
                    <tr>
                      <td>
                          @if (Storage::disk('projects')->has($project->slug))
                          <img src="{{ asset('/storage/projects/'.$project->slug.'/header.jpg') }}" id="img" class="img" style="width:100%;height:200px;background-color:#ccc;border:2px solid gray;">
                          @else
                          <img src="" id="img" class="img" style="width:100%;height:200px;background-color:#ccc;border:2px solid gray;">
                          @endif
                          <input type="file" name="pathheader" id="pathheader" class="form-control-file" aria-describedby="fileHelp" style="display:none;">
                      </td>
                      <td>
                          @if (Storage::disk('projects')->has($project->slug))
                          <img src="{{ asset('/storage/projects/'.$project->slug.'/home.jpg') }}" id="img" class="img" style="width:100%;height:200px;background-color:#ccc;border:2px solid gray;">
                          @else
                          <img src="" id="img2" class="img2" style="width:100%;height:200px;background-color:#ccc;border:2px solid gray;">
                          @endif
                          <input type="file" name="pathhome" id="pathhome" class="form-control-file" aria-describedby="fileHelp" style="display:none;"><br>
                      </td>
                    </tr>
                    <tr>
                      <td>
                          <input type="button" name="" value="Seleccionar header" id="browse_file" class="btn btn-danger form-control">
                      </td>
                      <td>
                          <input type="button" name="" value="Seleccionar home" id="browse_file2" class="btn btn-danger form-control">
                      </td>
                    </tr>
         </table>
    

    更新数据的函数

    public function updateProject(Request $request, $id) 
    
    //Actualizar la informacion de un trabajador
        {
            $project = Project::find($id);
            $project->slug = $request->input('slug');
            $project->order = $request->input('order');
            $project->public = $request->input('public');
            if($request->hasFile('pathheader')){
                $project->pathheader = $request->file('pathheader');
                \Storage::disk('projects')->putFileAs($project->slug,$project->pathheader,'header.jpg');
            }
            $project->pathheader = Project::find($id)->pathheader;
            if($request->hasFile('pathhome')){
                $project->pathhome = $request->file('pathhome');
                \Storage::disk('projects')->putFileAs($project->slug,$project->pathhome,'home.jpg');
            }
            $project->pathhome = Project::find($id)->pathhome;
            $project->save();
        }
    

    我希望有人能帮助我,我会非常感激。

    3 回复  |  直到 8 年前
        1
  •  2
  •   Mihai Matei    8 年前

    您可以使用以下项目模型:

    $pathheader = Project::find($id)->pathheader;
    
        2
  •  0
  •   Jaseel P V    8 年前

    您可以尝试此查询

    $pathheader = DB::table('projects')->select('pathheader')->where('id','=',$id)‌​->first(); 
    

        3
  •  0
  •   AddWeb Solution Pvt Ltd    8 年前

    $project->pathheader = DB::table('projects')
                                ->where('id',$id)
                                ->where('pathheader',  DB::raw("(select pathheader from projects)"))
                                ->first();
    

    希望这为你工作!!!

    推荐文章