我使用了很多对很多关系。我有三个表,分别是:product,tag,productstag。在这里,我希望每当我要删除产品时,它也将删除它与productstag表上的关系。
adb install apk
如您所见,我已经使用product_id和tag_id作为主键。 所以我不能用这个
public function up()
{
Schema::create('productstags', function (Blueprint $table) {
$table->integer('product_id');
$table->integer('tag_id');
$table->primary(['product_id','tag_id']);
$table->timestamps();
});
}
那还有什么选择?
关于我的产品型号
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
$table->foreign('tag_id')->references('id')->on('products')->onDelete('cascade');
在我的标签模型上:
public function tags()
{
return $this->belongsToMany('App\Tag','productstags','product_id','tag_id')->withTimestamps();
}
关于我的产品销毁功能:
public function products()
{
return $this->belongsToMany('App\Product','Productstags','tag_id','product_id');
}
答案 0 :(得分:0)
它不如cascade
漂亮,但是您可以覆盖delete方法并执行以下操作:
public function delete(){
$this->name_of_the_relationship()->delete();
return parent::delete();
}