Laravel使用控制器“向后”外键删除

时间:2019-11-21 14:19:36

标签: php laravel eloquent

我遇到的问题是我试图这样做,所以当我删除用户帐户时,与该帐户相关的所有内容都会被删除。这里的问题是,在我保存用户信息的表中,没有外键引用,它们全部来自其他表我的用户表。

这里是一个示例(链接,因为我不够高,无法发布图像):

Foreign examaple

我的问题(粉红色是我所拥有的,蓝色是我想要的),变得很简单(涂上油漆):

Problem example

这是删除按钮的查看代码:

<th> <a href="/instagramDelete/{{$instagramAccount->id}}"> <button class="btn btn-danger btn-circle btn-sm"><i class="fas fa-trash"></i></button> </a> </th>

我的控制器中的代码:

public function delete($id)
    {
        DB::table('instagram_accounts')->where('id', $id)->delete();

        return redirect('/instagram');
    }

(仅在与该用户相关联的其他页面没有来自该用户的数据时有效)

我网络上的代码(我不知道是否需要在此处添加代码)

Route::get('/instagramDelete/{id}', 'InstagramAccountController@delete')->middleware('auth');

我的模型中的代码:

class InstagramAccount extends Model
{
    public function configuration()
    {
        return $this->hasOne(Configuration::class, 'account_id');
    }
}

我希望这足以让您了解我的意思,因为我认为这个问题有点含糊。

如果您需要更多代码或其他东西,请询问。

一如既往,在此先感谢您!

1 个答案:

答案 0 :(得分:2)

您可以在迁移文件中使用层叠来实现此目的。这样,当您从父表中删除时,  其他表上的相关数据将被删除

$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

引用:https://laravel.com/docs/5.8/migrations#foreign-key-constraints