2017-12-27 2 views
1

Ich habe ein Problem mit der Aktualisierung der Datei. Ich habe ein Formular mit den folgenden Attributen:Laravel: Update-Feld, wenn Wert existiert

  • Titel
  • Text
  • pdf-Datei

Das Problem der Update-Vorgang ist, wird die PDF-Datei als den folgenden Wert speichern:

  • mit Datei: ["example.pdf"]
  • keine Datei: [ ""] [ "] der pdf-Datei Wert

Es wird umfassen", wenn aktualisiert.

Ich möchte die PDF-Datei auf eine neue Datei aktualisiert, wenn eine neue Datei ausgewählt wird, alte Datei blieb, wenn keine neue Datei ausgewählt ist und Nullwert in Datei, wenn es keine Datei gibt, um damit zu beginnen.

Hier ist der Update-Controller.

public function update() 
{ 
    if (Auth::check()) { 
     $user_id = Auth::user()->id;  
     $main_id = Input::get('edit_id'); 
     $announcements = Announcement::find($main_id); 
     $getFile = Input::file('new_brochure'); 

     $rules = array(
     'title' => 'required', 
     'text' => 'required', 
     ); 

     $validator = Validator::make(Input::all(), $rules); 
     if ($validator->fails()) { 
     return back()->withInput() 
     ->withErrors($validator) 
     ->withInput(); 
     } 

     if ($getFile) { 
     $file = array('new_brochure' => Input::file('new_brochure')); 
     $destinationPath = 'img/brochures/announcements'; // upload path 
     $extension = Input::file('new_brochure')->getClientOriginalExtension(); 
     $fileName = rand(11111,99999).'.'.$extension; // renaming image 
     Input::file('new_brochure')->move($destinationPath, $fileName); 
     $announcements->brochure = $fileName; 
    } 

    $old = Announcement::where('id',$main_id)->pluck('brochure'); 
    if (empty($old)) { 
     $announcements->brochure = null; 
    } 
    else { 
     $announcements->brochure = $old; 
    } 

    $announcements->title = (Input:: get('title')); 
    $announcements->from = (Input:: get('from')); 
    $announcements->to = (Input:: get('to')); 
    $announcements->text = (Input:: get('text')); 
    $announcements->is_active = '1'; 
    $announcements->created_by = $user_id; 
    $announcements->updated_by = $user_id; 
    $current_date = date("Y-m-d H:i:s"); 
    $announcements->created_at = $current_date.".000"; 
    if ($announcements->save()){ 
     $this->request->session()->flash('alert-success', 'Updated successfully!'); 
    } 
    else{ 
     $this->request->session()->flash('alert-warning', 'Could not update!'); 
     } 
     return redirect()->route('Announcements_view'); 
    } 
} 

Was mache ich falsch in diesem Code? Bitte hilf mir. Vielen Dank. diese

Antwort

4

Wechsel:

$old = Announcement::where('id',$main_id)->pluck('brochure'); 

An:

$old = Announcement::where('id',$main_id)->value('brochure'); 

Die Sache ist pluck() wird eine Sammlung von brochure, kein String zurück. Und value() wird eine Zeichenfolge oder null zurückgeben.

+1

Ich verstehe es. Es funktioniert jetzt. Danke @AlexeyMezenin –

0
public function update() 
    { 
     if (Auth::check()) { 
      $user_id = Auth::user()->id;  
      $main_id = Input::get('edit_id'); 
      $announcements = Announcement::find($main_id); 
      $getFile = Input::file('new_brochure'); 

      $rules = array(
      'title' => 'required', 
      'text' => 'required', 
      ); 

      $validator = Validator::make(Input::all(), $rules); 
      if ($validator->fails()) { 
      return back()->withInput() 
      ->withErrors($validator) 
      ->withInput(); 
      } 

      if (!empty(Input::file('new_brochure'))) { 
      $file = array('new_brochure' => Input::file('new_brochure')); 
      $destinationPath = 'img/brochures/announcements'; // upload path 
      $extension = Input::file('new_brochure')->getClientOriginalExtension(); 
      $fileName = rand(11111,99999).'.'.$extension; // renaming image 
      Input::file('new_brochure')->move($destinationPath, $fileName); 
      $announcements->brochure = $fileName; 
     } 
     else 

      $old = Announcement::where('id',$main_id)->value('brochure'); 
      $announcements->brochure = $old; 
     } 

     $announcements->title = (Input:: get('title')); 
     $announcements->from = (Input:: get('from')); 
     $announcements->to = (Input:: get('to')); 
     $announcements->text = (Input:: get('text')); 
     $announcements->is_active = '1'; 
     $announcements->created_by = $user_id; 
     $announcements->updated_by = $user_id; 
     $current_date = date("Y-m-d H:i:s"); 
     $announcements->created_at = $current_date.".000"; 
     if ($announcements->save()){ 
      $this->request->session()->flash('alert-success', 'Updated successfully!'); 
     } 
     else{ 
      $this->request->session()->flash('alert-warning', 'Could not update!'); 
      } 
      return redirect()->route('Announcements_view'); 
     } 
    } 
+0

vor allem, wie ist das anders als die erste Antwort, zweitens bitte nicht nur mit einem Code antworten –

+0

Danke für Ihre Antwort @Bhaskar –

+0

Zum ersten Mal können Sie überprüfen, wie unterscheidet sich von der ersten Antwort. Danke für den guten Vorschlag, aber 90% Programmierer sehen nur Code. Ich habe keinen Kommentar gelesen. @Mein Name ist jeff – Bhaskar

Verwandte Themen