2016-11-07 2 views
1

Ich arbeite an mehreren Bildupload in Laravel. Der Upload ist erfolgreich, aber ich habe ein Problem. Für den späteren Gebrauch sollte ich in der Datenbank speichern. Für einzelne Spalte ist es einfach, aber für verschiedene Spalten für verschiedene Bilder konnte ich es nicht tun.Wie speichert man mehrere Bilderpfade in der Datenbank in Laravel?

Hier ist mein Bild Upload-Code $ images = []; $ destDir = "public/uploads /";

if($request->file('image1')) $images[]=$request->file('image1'); 
    if($request->file('image2')) $images[]=$request->file('image2'); 
    if($request->file('image3')) $images[]=$request->file('image3'); 

    foreach($images as $image) 
    { 

     if(!empty($image)) 
     { 
      $imageName = $image->getClientOriginalName(); 
      $extension = $image->getClientOriginalExtension(); 
      $temPath = $image->getRealPath(); 
      $enImg = mt_rand(1111,9999).".".$extension; 
      $newPath = $destDir.$enImg.".".$extension; 
      move_uploaded_file($temPath, $newPath); 
     } 
    } 

Antwort

1

Ich habe ein Gefühl, das man dies in einem nähern eine Art, die es für dich schwieriger macht. Statt mehrere separate Datei Eingänge in Ihrem Formular erstellen, können Sie nur eine mehrere Datei Eingang gesetzt und den Namen des Eingangs auf ein Array gesetzt wie so:

<form action="demo_form.asp"> 
    Images: <input type="file" name="images[]" multiple> 
    <input type="submit"> 
</form> 

Dann in Ihrer PHP können Sie etwas tun:

if (isset($request->all()['images'])) { 
    $this->persistUserImages($request->all()['images'], $userId); 
} 

/** 
* Persists user images to storage and DB 
* 
* @param array $userImages 
* @param int $userId 
* @return array 
*/ 
private function persistUserImages(array $userImages, $userId = 1) 
{ 
    if (empty($userImages)) { 
     return []; 
    } 

    $uploadedUserImagesFilenames = $this->uploadUserImagesToCloud($userImages, $userId); 

    foreach ($uploadedUserImagesFilenames as $filename) { 
     $userImage = new UserImage([ 
      'user_id' => $userId, 
      'filename' => $filename, 
      'visible' => 1 
     ]); 

     $userImage->save(); 
    } 
} 
+0

@pandesantos Hat dies Ihr Problem gelöst? –

+0

@ restis-palampougioukis Ja danke :). Entschuldigung für die Verspätung. – pandesantos

+0

@pandesantos kein Problem Kumpel! Ich bin froh, dass ich Ihnen helfen kann. Könnten Sie die Antwort als akzeptiert markieren? –

0

eine Pivot-Tabelle und Speichern von Bildern in getrennten Reihen erstellen ..

Table schema:- `images` table 
columns `id`,`user_id`(foreign key),`image_path` 

Laden Sie Ihre $newPath in dieser Tabelle jedes Mal ..

Verwandte Themen