如何从Laravel中的多个表中删除数据?

时间:2019-08-11 07:21:10

标签: laravel

我想从AssetType表和TypeProperties表中删除数据。我可以删除AssetType表的数据,但不能删除TypeProperties。并出现以下错误:

  

试图获取非对象的属性“ id”。

function deleteType($id)
 {
      $type = AssetType::find($id)->delete();
      $property = TypeProperties::where('assettype_id', $type->id)->get()->delete();
      return redirect(url('assettype'));
  }

2 个答案:

答案 0 :(得分:0)

您不需要获取AssetType。您可以使用传递给函数的$id从两个表中删除。

function deleteType($id)
{
    AssetType::where('id', $id)->delete();
    TypeProperties::where('assettype_id', $id)->delete();

    return redirect(url('assettype'));
}

答案 1 :(得分:0)

您实际上可以在迁移中进行设置:

$table->foreign('assettype_id')->references('id')->on('assettypes')->onDelete('cascade');

来源:http://laravel.com/docs/5.8/migrations#foreign-key-constraints

  

您还可以为“在删除时”和“在   更新”约束的属性:

$table->foreign('assettype_id')
      ->references('id')->on('assettypes')
      ->onDelete('cascade');