2015-10-05 55 views
3

我有我的laravel 5.1错误问题class Illuminate \ Database \ Eloquent \ Relations \ HasMany的对象无法转换为串,当我点击删除Laravel 5.1 Class of Illuminate Database Eloquent Relations HasMany的对象无法转换为字符串

GalleryController.php

public function deleteGallery($id) 
{ 
    //load the gallery 
    $currentGallery = Gallery::findOrfail($id); 

    // check ownership 
    if ($currentGallery->created_by != Auth::user()->id) { 
     abort('403','You are not allowed to delete this gallery'); 
    } 

    // get the images 
    $images = $currentGallery->images();  

    // delete the images 
    foreach ($currentGallery->$images as $image) { 
     unlink(public_path($image->file_path)); 
    } 

    // delete the DB records 
    $currentGallery->images()->delete(); 

    $currentGallery->delete(); 

    return redirect()->back(); 
} 

Route.php

Route::get('gallery/delete/{id}','[email protected]'); 

型号Gallery.php

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Gallery extends Model 
{ 
    protected $table = 'gallery'; 

    public function images() 
    { 
     return $this->hasMany('App\Image'); 
    } 
} 

型号Image.php

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class image extends Model 
{ 
    protected $fillable = ['gallery_id', 'file_name', 'file_size', 'file_mime', 'file_path', 
    'created_by']; 

    public function gallery() 
    { 
     return $this->belongsTo('App\Gallery'); 
    } 

} 

查看gallery.blade.php

@extends('master') 

@section('content') 
<div class="row"> 
    <div class="col-md-12"> 
     <h1>My Gallery</h1> 
    </div> 
</div> 

<div class="row"> 
    <div class="col-md-8"> 
     @if ($galleries->count() > 0) 
     <table class="table table-striped table-bordered table-responsive"> 
      <thead> 
       <tr class="info"> 
        <th>Name of the gallery</th> 
        <th></th> 
       </tr> 
      </thead>     
      <tbody> 
       @foreach($galleries as $gallery) 
       <tr> 
        <td>{{$gallery->name}} 
         <span class="pull-right"> 
          {{ $gallery->images()->count() }} 
         </span> 
        </td> 
        <td><a href="{{url('gallery/view/'.$gallery->id)}}">View</a>/
         <a href="{{url('gallery/delete/'.$gallery->id)}}">Delete</a> 
        </td> 
       </tr>  
       @endforeach    
      </tbody> 
     </table> 
     @endif 
    </div> 

    <div class="col-md-4"> 
    @if (count($errors) > 0) 
    <div class="alert alert-danger"> 
     <ul> 
      @foreach ($errors->all() as $error) 
      <li>{{ $error }}</li> 
      @endforeach 
     </ul> 
    </div> 
    @endif 
     <form class="form" method="POST" action="{{url('gallery/save')}}"> 
     <input type="hidden" name="_token" value="{{ csrf_token() }}"> 

     <div class="form-group"> 
      <input type="text" name="gallery_name" 
      id="gallery_name" placeholder="Name of the gallery" 
      class="form-control" 
      value="{{ old('gallery_name')}}" /> 
     </div> 

     <button class="btn btn-primary">Save</button> 
     </form> 
    </div> 
</div> 

@endsection 

回答

2

在画廊控制器,你不需要因为你没有使用可变任何地方else.Hence删除线

// get the images 
$images = $currentGallery->images(); 

获得的图像才有的foreach是为

// delete the images 
foreach ($currentGallery->images as $image) { 
    unlink(public_path($image->file_path)); 
} 

请注意使用$currentGallery->images

+0

感谢您的帮助约瑟夫:) –

+0

感谢您的帮助约瑟夫:)但我想问一些为什么只有在数据库中记录可以删除,我的文件夹中的文件图像无法删除 –

+0

无法看到任何功能从您的文件夹图像中删除?或者说是取消链接的功能? –

相关问题