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
功能
删除术语时
记录第一次调用删除方法。
如果删除方法为returntrue
,则删除记录,否则不删除
$category = Term::with('TermTaxonomy')->find($id);
$category->delete();
我建议您使用带有on delete cascade的外键约束,然后如何使用它?很高兴再次见到你@lukasgeiter
$category = Term::with('TermTaxonomy')->find($id);
$category->delete();