2015-07-09 18 views
6

Aşağıdaki modellerim var; Marka, Resim ve Resim_ boyutu. Markanın bir resmi var ve görüntü birçok image_sizes var. Bu modellerin hepsi yumuşak silme kullanır ve silme yönü iyidir. Ancak daha sonra silinmiş bir markayı geri yüklemek istesem de ilgili resim ve image_size modellerini geri yüklemem gerekir.Laravel 5: Silinen ilgili modellerin nasıl geri alınır?

Marka modelimi geri yüklediğimde, görüntüyü alıp geri yükleyebilmem için model olayları kullanmayı inceledim ve görüntü boyutlarını elde etmek için resim modelinde benzer bir olaya sahip olacağım. Onları geri yükle. Marka için silinmiş resim kaydını almak için uğraşıyorum. Bu benim marka modelinde yapmaya çalışıyorum ne var:

/** 
* Model events 
*/ 
protected static function boot() { 
    parent::boot(); 

    /** 
    * Logic to run before delete 
    */ 
    static::deleting(function($brand) { 
     $brand->image->delete(); 
    }); 

    /** 
    * Logic to run before restore 
    */ 
    static::restoring(function($brand) { 
     $brand = Brand::withTrashed()->with('image')->find($brand->id); 
     $brand->image->restore(); 
    }); 
} 

Sadece görüntüyü geri çalışır satırında aşağıdaki hata iletisini alabilirsiniz: Kodunuzda

Call to a member function restore() on a non-object 

cevap

4

sen Resmi değil markayı getiren sorgudaki yumuşak silme sınırlamasını devre dışı bırakın. Aşağıdaki deneyin:

static::restoring(function($brand) { 
    $brand->image()->withTrashed()->first()->restore(); 
}); 

otomatik geri callback'inde geçirilen olarak $ marka nesne getirmesi gerek yoktur unutmayınız.