我想洗掉一個包含許多“Devis”的專案,而一個 Devis 包含許多“Articals”,所以當我洗掉一個專案時,devis 及其 articals 也應該洗掉
這是我的代碼
專案模型:
class Project extends Model{
protected $table = 'project';
protected $primaryKey = 'idp';
protected $fillable = ['pname',];
public function devises()
{
return $this->belongsToMany(Devis::class);
}}
德維斯型號:
class Devis extends Model{
protected $table = 'Devis';
protected $primaryKey = 'idd';
protected $fillable = ['type', 'lot', 'prix_total_avant_tax', 'tax_perse', 'tax_amount', 'prix_total_apre_tax', 'notes',];
public function articals()
{
return $this->belongsToMany(Artical::class)->withPivot('qte', 'total');
}
}
藝術模型:類藝術擴展模型{
protected $table = 'artical';
protected $primaryKey = 'ida';
protected $fillable = [ 'num_art' , 'designation', 'unite','prix_unit',];}
專案表:
德維斯表:
devis_project 表“資料透視表”:
artical_devis 表“資料透視表”:
先感謝您。
uj5u.com熱心網友回復:
您為什么不嘗試洗掉專案的事件來創造奇跡。
在您的專案模型中添加:
public static function boot() {
parent::boot();
// This method will be called before deleting $project
static::deleting(function($project) {
$project->devis()->delete();
});
}
在您的 Devis 模型中添加:
// This method will be called before deleting $devis
public static function boot() {
parent::boot();
static::deleting(function($devis) {
$devis->articals()->delete();
});
}
所以你可以簡單地
$project->delete();
uj5u.com熱心網友回復:
您可以試試這個:要洗掉一對多關系記錄,請使用分離方法。detach 方法將從中間表中洗掉適當的記錄,這完全取決于您如何進行遷移以及您在那里描述的關系型別行為:
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Project $project
* @return \Illuminate\Http\Response
*/
public function destroy(Product $product)
{
$project->devises()->detach();
$project->devises()->delete();
$project->delete();
return redirect()
->route('project.index')
->withSuccess('Project deleted.');
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/493824.html
標籤:拉拉维尔 模型视图控制器 数据透视表 sql-删除 laravel 查询生成器
下一篇:k8s單master集群部署