2016-09-24 132 views
0

刪除多個表中的行我是新位Laravel,我想從一個表中刪除的項目,並刪除它的圖像和其他2個表計劃如何在laravel做到這一點雄辯:用相同的ID

這裏是項目

public function destroy($id) 
    { 
     $project = Projects::findOrFail($id); 
     $project->delete(); 
     return Redirect::to('admin/view-project')->with('message', 'Project deleted successfully'); 
    } 

的刪除控制器我怎麼能做到這一點,我發現有人說,這應該從模型中做,但我不明白。

這裏是項目模型

class Projects extends Eloquent implements UserInterface, RemindableInterface 
{ 

    use UserTrait, RemindableTrait; 

    protected $table = 'project_info_arabic'; 

    public function projectImages() 
    { 
     return $this->hasMany('ProjectsImage'); 
    } 

    public function projectPlans() 
    { 
     return $this->hasMany('ProjectsPlans'); 
    } 
} 

親切任何人可以幫助。

+0

您是否在項目計劃和圖像表之間創建了任何關係?我的意思是你有沒有使用Laravel關係? –

+0

@Bashar Nozibulla你的意思是'hasMany'是的,我認爲這是清楚的問題! –

+1

如果您瞭解laravel關係,那麼在創建表時使用ondelete級聯。我的意思是在你的計劃和圖像表中,我會認爲你已經定義了關係。現在我告訴你,當你創建外鍵使用ondelete級聯'$ table-> integer('project_id') - > unsigned(); $ table-> foreign('project_id') - >引用('id') - > on('projects') - > onDelete('cascade');'在您的計劃和圖片表中使用這種方式 –

回答

0

更好的方法。這會自動爲你做,而且你不需要再考慮它了。

請參閱https://laravel.com/docs/5.3/migrations#foreign-key-constraints

+0

會試試這個並且回來給你 –

+0

this對於像我這樣的Laravel初學者很有幫助謝謝 –

+0

不止歡迎。這並不一定與Laravel有關,這與純數據庫相關。有趣的是知道Laravel支持創建密鑰。請享用。 – hogan

0

考慮數據的一致性時,數據庫層外鍵的實現你可以嘗試模型事件laravel.Check這個

class Projects extends Eloquent implements UserInterface, RemindableInterface 
{ 

    public static function boot() 
    { 
     parent::boot(); 

     Projects::deleted(function($project) 
     { 
      $project->projectImages()->delete(); 
      $project->projectPlans()->delete(); 
     }); 
    } 
} 
+0

我試試這個,但'Class'ProjectsImage'找不到' –