首页 > 其他分享 > Laravel — P46:控制器销毁(CMP)

Laravel — P46:控制器销毁(CMP)

时间:2023-02-12 21:37:41浏览次数:37  
标签:Laravel 01 22 29 Chevy 2023 P46 id CMP

我们到了最后一个方法:​destroy​​。您猜对了,该​​destroy​​方法将从数据库中删除资源。这是最简单的一堆。我们只需要创建一个链接,删除一个资源并将用户返回到页面​​index​​。

路由

路线已经创建。我们在几篇文章之前就这样做了。

Route::prefix('/personalcars')->group(function() {
Route::delete('/{id}', [PersonalCarController::class, 'destroy']);
});

​delete​​我们只需要向我们的路线发送请求​​personalcars/{id}​​。

创建删除请求

在我们销毁资源之前,我们需要能够到达那里。你如何​​delete​​向 Laravel 发送请求?用表格。

<form method="post" action="..."> 
@csrf
@method('delete')
<button type="submit">Delete</button>
</form>

我们只需要将我们的按钮添加到我们认为资源应该存在的位置。我会把它添加到我们的​​index.blade.php​​文件旁边​​Edit Car​​。

<x-layouts.app title="{{ $title }}">
<div class="flex bg-white mt-12">
<div class="items-center text-center lg:text-left px-8 md:px-12 lg:w-full">
<div class="relative overflow-x-auto">
@if (session('status'))
<div class="block bg-green-200 p-4">
{{ session('status') }}
</div>
@endif
<table class="w-full text-sm text-left text-gray-500 dark:text-gray-400">
<thead class="text-xs text-gray-700 uppercase bg-gray-50 dark:bg-gray-700 dark:text-gray-400">
<tr>
<!-- ... -->
<th scope="col" class="px-6 py-3">
Delete
</th>
</tr>
</thead>
<tbody>
@foreach($cars as $car)
<tr class="bg-white border-b dark:bg-gray-800 dark:border-gray-700">
<!-- ... -->
<td class="px-6 py-4">
<form method="post" action="/personalcars/{{ $car->id }}">
@csrf
@method('delete')
<button type="submit">Delete</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
<a href="/personalcars/create">
<button class="block bg-green-400 hover:bg-green-600 text-white uppercase text-lg mx-auto p-4 rounded" type="submit">Add New Car</button>
</a>
</x-layouts.app>

销毁方法

该路由会将代码定向​​destroy​​到​​PersonalCarController​​. 在其中,我们只需要删除资源并将用户重定向回​​index.blade.php​​成功消息即可。

<?php

namespace App\Http\Controllers;

use App\Models\Image;
use App\Models\PersonalCar;
use App\Models\PersonalCarBrand;
use App\Models\PersonalCarModel;
use Faker\Provider\Person;
use Illuminate\Http\Request;

class PersonalCarController extends Controller
{
// ...

/**
* Remove the specified resource from storage.
*
* @param int $id
*/
public function destroy($id)
{
PersonalCar::destroy($id);

return redirect()->to('/personalcars/')->with('status', 'Your car has been deleted.');
}
}

 Laravel — P46:控制器销毁(CMP)_php

我经历并删除了一堆汽车。现在只有一个问题。我们关于那辆车的图像仍然位于关联的表格中。我们将在下一篇文章中进行图像清理。

mysql> select * from image_personal_car;
+-----------------+----------+
| personal_car_id | image_id |
+-----------------+----------+
| 1 | 1 |
| 1 | 3 |
| 18 | 6 |
| 15 | 7 |
| 15 | 8 |
| 18 | 9 |
+-----------------+----------+
6 rows in set (0.00 sec)

mysql> select * from images;
+----+---------------------------------------------------------------+-------------------------+---------------------+---------------------+
| id | url | alt | created_at | updated_at |
+----+---------------------------------------------------------------+-------------------------+---------------------+---------------------+
| 1 | https://pngimg.com/uploads/chevrolet/%D1%81hevrolet_PNG18.png | 2007 Chevy Corvette | 2023-01-22 13:15:11 | 2023-01-22 13:15:11 |
| 2 | https://pngimg.com/uploads/chevrolet/%D1%81hevrolet_PNG23.png | 2003 Chevy Corvette | 2023-01-22 13:29:50 | 2023-01-22 13:29:50 |
| 3 | https://pngimg.com/uploads/chevrolet/%D1%81hevrolet_PNG25.png | 2003 Chevy Corvette | 2023-01-22 13:30:08 | 2023-01-22 13:30:08 |
| 4 | https://pngimg.com/uploads/chevrolet/%D1%81hevrolet_PNG60.png | Test Image | 2023-01-22 13:36:52 | 2023-01-22 13:36:52 |
| 5 | images/CHl8y3afKXuwgE8DZWt0D61vOwUEkB11CtSIl0lO.jpg | 2003 Chevy Corvette | 2023-01-28 17:46:41 | 2023-01-28 17:46:41 |
| 6 | images/yrqW77FwXqfwmdLA3rH2FQFoavAXxuolz48s5LKu.jpg | 2003 Chevy Corvette | 2023-01-28 17:47:02 | 2023-01-28 17:47:02 |
| 7 | images/ZFfJMUIIu0B8JXjqux51poDcCUTm6hC3msIM9C8n.jpg | 2024 Chevy Corvette Z06 | 2023-01-29 22:07:37 | 2023-01-29 22:07:37 |
| 8 | images/b44fQE1vLjfmEJfJvbIeoMmKNKUjiztUPSByEHJk.jpg | 2024 Chevy Corvette Z06 | 2023-01-29 22:07:43 | 2023-01-29 22:07:43 |
| 9 | images/BoCbU6B71w1e1WuKpLGdIOv6nsVUaiI1NtiQcmJ6.jpg | 2003 Chevy Corvette | 2023-01-29 22:14:08 | 2023-01-29 22:14:08 |
+----+---------------------------------------------------------------+-------------------------+---------------------+---------------------+
9 rows in set (0.00 sec)

标签:Laravel,01,22,29,Chevy,2023,P46,id,CMP
From: https://blog.51cto.com/u_1213352/6052180

相关文章

  • Laravel — P54:路由组 — 中间件和控制器
    我想在​​web.php​​​文件中提及的最后一个主题是路由组。考虑到还没有触及​​api.php​​也经常使用的文件,还没有完全讨论完路由。将中间件应用于组要将中间件应用于特......
  • Laravel — P53:速率限制
    对于眼尖的读者,您可能已经注意到我们上一篇文章中调用​​configureRateLimiting​​​的方法。​​RouteServiceProvider​​protectedfunctionconfigureRateLimiting(){......
  • Laravel — P52:显式路由模型绑定
    什么时候需要显式绑定模型与使用Laravel的隐式绑定?我经常发现的一个常见问题没有适当或足够简单的回答。因此,我认为它没有像应有的那样频繁使用。在前面的示例中,我们使用......
  • Laravel — P51:路由模型隐式绑定
    现在我们已经熟悉了依赖注入,我们还能用这个概念做什么呢?我们能否像模型一样将我们的模型“注入”​​User​​​到我们的路由中,然后在不实例化​​User​​模型的情况下利用......
  • Laravel — P50:路由和依赖注入
    我们在前几篇文章中介绍了一些依赖注入主题,但现在我们想开始更具体一些。我们终于进入了Laravel的更高级部分,并将开始关注Laravel特定领域内的特定主题。接下来的几篇文......
  • Laravel — P49:依赖注入
    我希望上一篇文章有意义。依赖注入确实是一个简单的概念。我觉得在你说你知道“Laravel中的依赖注入”之前,你应该完整地理解它。在我们再次进入依赖注入之前,你应该了解Lar......
  • Laravel — P48:依赖注入概念(高级 PHP 概念)
    在你的Laravel职业生涯中,你会多次听到“依赖注入”这个词,所以你不妨熟悉一下它。在我们进入Laravel之前,让我们看看依赖注入作为PHP(或任何编程语言)中的一个概念。我们应......
  • Laravel — P55:路由中的软删除模型
    完成这样的教程系列并不像看起来那么简单。您想按特定顺序涵盖主题,但每次谈到一个新主题时,您都会意识到您需要涵盖其他内容才能做到这一点。例如,在学习了Laravel中一些比......
  • laravel groupby 报错
    报错信息laravelwhichisnotfunctionallydependentoncolumnsinGROUPBYclause;thisisincompatiblewithsql_mode=only_full_group_by关闭严格模式:修改app......
  • laravel data_get 函数从多维数组中获取值
    当需要从多维数组中获取值,并且进行判空,赋值默认值的时候,可以使用下面的测试用例。$arr=["name"=>"陶士涵","title"=>["sub"=>"测试"],"test"=>null......