本文讲 Laravel CRUD(create, read, update, delete),学习 Laravel CRUD 期间受 scotch.io 帮助很大,跳转过去看效果可能更好。
News Table
创建迁移文件
直接通过 artisan migrate:make 创建迁移文件即可:
1 | php artisan migrate:make create_news_table |
在 app/database/migrations 下找到刚刚创建的迁移文件,我的是 2014_11_30_084437_create_news_table.php,填写表创建条件,查看官方教程,以下是我的:
1 |
|
数据填充 seed
Laravel 在 app/seeds 下默认有一个 DatabaseSeeds.php,直接在里面操作好了:
1 | class DatabaseSeeder extends Seeder { |
多创建几个都行,官方教程在这。
然后通过 Artisan Cli 进行数据填充即可:
1 | php artisan db:seed |
Route::resource()
你希望给 news 路由以 CRUD 操作,Laravel 已经帮你实现了一个控制器,在 app/routes.php 添加:
1 | Route::resource('news', 'NewsController'); |
这样路由设置就完成了。
News Model
创建一个 News Model 是最好的,这样你就省得去用 DB 来查询数据了。 在 app/models 创建 News.php:
1 |
|
就是这么简单,继承 Eloquent 类。
CRUD Controller
利用 artisan 创建一个 CRUD Controlelr:
1 | php artisan controller:make NewsController |
你就可以在 app/controllers 看到 NewsControlelr.php。 或者手动创建 app/controllers/NewsController.php:
1 |
|
CRUD 路由结构
| HTTP Verb | Path (URL) | Action (Method) | Route Name |
|---|---|---|---|
| GET | /news | index | news.index |
| GET | /news/create | create | news.create |
| POST | /news | store | news.store |
| GET | /news/{id} | show | news.show |
| GET | /news/{id}/edit | edit | news.edit |
| PUT/PATCH | /news/{id} | update | news.update |
| DELETE | /news/{id} | destroy | news.destroy |
index()
index() 负责展示 news 首页,比如这样:
1 | public function index() |
create()
create() 负责展示创建新的新闻的页面,比如:
1 | public function create() |
store()
store() 负责保存从 create() POST 过来的数据,路由是 /news,以下代码适用于 Ajax:
1 | public function store() |
show($id)
show() 负责展示新闻,路由是 news/{id},比如:
1 | public function show($id) |
然后你可以在 pages/news/show.blade.php 注入数据:
1 | <p>{{ $news->id }}</p> |
edit($id)
edit($id) 是用来展示新闻修改页面,路由是 news/{id}/edit,例子:
1 | public function edit($id) |
其实这个和 show($id) 的不同就是路由和前端页面,前端我就不写在这里了,有疑惑可以去 scotch.io 学习。
update($id)
update($id) 接受 PUT 过来的新数据然后进行更新,路由是 news/{id},例子适用于 Ajax:
1 | public function update($id) |
destroy($id)
destroy($id) 负责接受 DELETE 方法删除数据,路由是 /news/{id},例子使用 Ajax:
1 | public function destroy($id) |