本文讲 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) |