Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何删除相关数据一对一关系laravel?_Php_Laravel 4_Eloquent - Fatal编程技术网

Php 如何删除相关数据一对一关系laravel?

Php 如何删除相关数据一对一关系laravel?,php,laravel-4,eloquent,Php,Laravel 4,Eloquent,术语表: 术语识别码 名字 鼻涕虫 术语分类表: 术语\u分类\u id 术语识别码 描述 我的学期模型: public function TermTaxonomy(){ return $this->hasOne('TermTaxonomy'); } 我的术语分类模型: public function Term(){ return $this->belongsTo('Term'); } 我想从术语和术语_分类表中删除相关数据,目前我所做的是: $categ

术语表:

  • 术语识别码
  • 名字
  • 鼻涕虫
术语分类表:

  • 术语\u分类\u id
  • 术语识别码
  • 描述
我的学期模型:

public function TermTaxonomy(){
    return $this->hasOne('TermTaxonomy');
}
我的术语分类模型:

public function Term(){
    return $this->belongsTo('Term');
}
我想从
术语
术语_分类
表中删除相关数据,目前我所做的是:

$category = Term::with('TermTaxonomy')->find($id);
// delete related   
$category->TermTaxonomy()->delete();
$category->delete();

它是有效的,但是有没有最好的方法来删除相关数据以及如何使用它?

我建议您使用外键约束,这样在删除时,引用记录也会被删除

使用Laravels:

现在,每次删除
术语
时,所有相关的
术语分类
都将被删除


如果您不使用Schema Builder:

我同意最好是创建外键,但是如果您出于某种原因不想这样做,您可以对术语模型做一些小的更改

在课程结束时添加以下内容:

public function delete(){
   $this->TermTaxonomy()->delete();
   return parent::delete();
}

因此,当您调用
Term::find($id)->delete()时,laravel将删除分类法

您也可以尝试模型事件

class Term extends Eloquent {
  public static function boot()
  {
    parent::boot();

    // Setup event bindings...
    static::deleting(function($term)
    {
      //delete related  
      if($term->TermTaxonomy()->delete()){
         return true;
      }
      return false;
    });
   }
}
Term
模型中添加
boot
功能

删除
术语时
记录第一次调用删除方法。 如果删除方法为return
true
,则删除记录,否则不删除

$category = Term::with('TermTaxonomy')->find($id);
$category->delete();

我建议您使用带有on delete cascade的外键约束,然后如何使用它?很高兴再次见到你@lukasgeiter
$category = Term::with('TermTaxonomy')->find($id);
$category->delete();