2016-09-24 7 views
0

同じIDを持つ複数のテーブルから行を削除し、削除することがlaravelここ雄弁:私は、私は1つのテーブルからプロジェクトを削除しようと、新しいビットLaravelにしています

でこれを行うにはどのように他の2つのテーブルから画像や計画です私は、誰かがこのモデルから実行する必要がありますが、私はそれを理解していないと述べたこれを行うことができますどのようにプロジェクト

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

あなたは??プロジェクト計画と画像テーブル間の任意の関係を作成している参照してください。ララベルの関係を使ったことはありますか? –

+0

@Bashar Nozibullaあなたは 'hasMany'を意味しますはい私はそれが問題ではっきりしていると思います!! –

+1

ラベール関係を理解し​​ている場合、テーブルの作成中にondelete cascadeを使用します。私はあなたの計画とイメージの表では、あなたが関係を定義したと思う外来のキーがあることを意味します。今私はあなたが外部キーを作成したときに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私のようなララベルの初心者には助けになりました。 –

+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' not found 'を得ました。 –

関連する問題