mysql - Laravel 同时删除两个相关表

标签 mysql laravel models delete-row

我正在尝试删除它们之间的两个相关表中的数据。因此,当我删除 websites 表中的一行时,我还想删除 keywords 表中与外键相关的行

网站
编号 |站点名称

1 |例子

关键字
编号 |网站编号 | kwName

1 | 1

所以当我删除一个网站时,具有相同id(website_id作为外键)的行不会被删除。

我的删除代码是:
Controller

public function destroy($id)
{ 
     $projects = Website::findOrFail($id);
     $projects->delete();

    return redirect()->route('projects.index')->with('alert-success','Data Has been Deleted!');
}

Blade

@foreach($projectss as $projects)

    <tr>

      <td>{{$no++}}</td>
      <td>{{$projects->siteName}}</td>
      <td>{{$projects->siteUrl}}</td>       


      <td>
        <form class="" action="{{route('projects.destroy',$projects->id)}}" method="post" enctype="multipart/form-data">
          <input type="hidden" name="_method" value="delete">
          <input type="hidden" name="_token" value="{{ csrf_token() }}">
          <a href="{{route('projects.show',$projects->id)}}" class="btn btn-success">View</a>
          <a href="{{route('projects.edit',$projects->id)}}" class="btn btn-primary">Edit</a>
          <input type="submit" class="btn btn-danger" onclick="return confirm('Are you sure to delete this data');" name="name" value="delete">
        </form>
      </td>
    </tr>
  @endforeach

模型关键字.php

public function website() {
    return $this->belongsTo('App\Website');
}

模型 Website.php

public function keywords() {
    return $this->hasMany('App\Keyword');
}

最佳答案

实现此目的的最佳方法是在定义外键约束时使用onDelete('cascade'):

$table->foreign('website_id')->references('id')->on('websites')->onDelete('cascade');

因此,当您删除一个网站时,与该网站相关的所有关键字都会自动删除。

https://laravel.com/docs/5.4/migrations#foreign-key-constraints

关于mysql - Laravel 同时删除两个相关表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41966007/

相关文章:

mysql - 删除和插入行mysql

php - Laravel 5.4 - 我什至无法执行 php artisan config :clear - [Illuminate\Database\QueryException] SQLSTATE[HY000] [1044]

javascript - 付款后重定向到带有成功消息的不同页面 - Vue JS

authentication - 如何为两个设计模型使用不同的 authentication_keys?

mysql - 如何连接两个表并在第三个表中显示结果

mysql用单​​个sql更新多个表以获得sum(qty)

java - 如何托管 android 应用程序。我正在使用 mysql 和 Tomcat 服务器

php - artisan 队列:work and artisan horizon:work?有什么区别

java - 改造 : How to decide the class members?

mysql - Django 错误 : AttributeError at - 'Manager' object has no attribute 'META'