laravel 使用数据库
laravel使用数据库处理非常简单。laravel目前支持以下4个数据库:
- mysql
- postgres
- sqlite
- sql server
可以使用原始sql,流畅的查询构建器和eloquent orm来触发对数据库的查询。为了理解laravel的所有crud(创建,读取,更新,删除)操作,我们将使用简单的学生管理系统。
连接到数据库
在 config/database.php 文件中 配置数据库, 并使用mysql中的结构创建大学数据库,如下表所示。
数据库:college
表:student
列名称 | 列数据类型 | 额外 |
---|---|---|
id | int(11) | 主键| 自动递增 |
名称 | varchar(25) |
我们将看到如何使用laravel在学生表中添加,删除,更新和检索数据库中的记录。
插入记录
我们可以使用db facade使用insert方法插入记录。insert方法的语法如下表所示。
syntax | bool insert(string $query, array $bindings = array()) |
parameters |
|
returns | bool |
description | run an insert statement against the database. |
实例
步骤1 - 执行以下命令以创建名为studinsertcontroller的控制器
php artisan make:controller studinsertcontroller --plain
第2步 - 成功执行第1步后,您将收到以下输出 -
第3步 - 将以下代码复制到文件
app/http/controllers/studinsertcontroller.php
app/http/controllers/studinsertcontroller.php
namespace app\http\controllers; use illuminate\http\request; use db; use app\http\requests; use app\http\controllers\controller; class studinsertcontroller extends controller { public function insertform(){ return view('stud_create'); } public function insert(request $request){ $name = $request--->input('stud_name'); db::insert('insert into student (name) values(?)',[$name]); echo "record inserted successfully. "; echo 'click here to go back.'; } }
步骤4 - 创建名为resources/views/stud_create.php的视图文件,并在该文件中复制以下代码。
resources/views/stud_create.php
<title>student management | add</title> <form action="/create" method="post"> <input type="hidden" name="_token" value="<?php echo csrf_token(); ?>" /> <table class="ke-zeroborder"> <tbody><tr> <td>name</td> <td><input type="text" name="stud_name" /></td> </tr> <tr> <td colspan="2"> <input type="submit" value="add student" /> </td> </tr> </tbody> </table> </form>
第5步 - 在app/http/routes.php中添加以下行。
app/http/routes.php
route::get('insert','studinsertcontroller@insertform'); route::post('create','studinsertcontroller@insert');
步骤6 - 访问以下url以在数据库中插入记录。
http://localhost:8000/insert
步骤7 - 输出将如下图所示。
查询记录
配置数据库后,我们可以使用select方法使用db facade检索记录。select方法的语法如下表所示。
syntax | array select(string $query, array $bindings = array()) |
parameters |
|
returns | array |
description | run a select statement against the database. |
实例
步骤1 - 执行以下命令以创建名为studviewcontroller的控制器。
php artisan make:controller studviewcontroller --plain
第2步 - 成功执行第1步后,您将收到以下输出 -
第3步 - 将以下代码复制到文件
app/http/controllers/studviewcontroller.php
app/http/controllers/studviewcontroller.php
namespace app\http\controllers; use illuminate\http\request; use db; use app\http\requests; use app\http\controllers\controller; class studviewcontroller extends controller { public function index(){ $users = db::select('select * from student'); return view('stud_view',['users'=-->$users]); } }
步骤4 - 创建名为resources / views / stud_view.blade.php的视图文件,并在该文件中复制以下代码。
resources/views/ stud_view.blade.php
<title>view student records</title> @foreach ($users as $user) @endforeach <table border="1" class="ke-zeroborder"> <tbody><tr> <td>id</td> <td>name</td> </tr> <tr> <td>{{ $user->id }}</td> <td>{{ $user->name }}</td> </tr> </tbody> </table>
第5步 - 在app / http / routes.php中添加以下行。
app/http/routes.php
route::get('view-records','studviewcontroller@index');
步骤6 - 访问以下url以查看数据库中的记录。
http://localhost:8000/view-records
步骤7 - 输出将如下图所示。
更新记录
我们可以使用更新方法使用db facade更新记录。update方法的语法如下表所示。
syntax | int update(string $query, array $bindings = array()) |
parameters |
|
returns | int |
description | run an update statement against the database. |
实例
请注意以下示例以了解有关更新记录的更多信息 -
步骤1 - 执行以下命令以创建名为studviewcontroller的控制器。
php artisan make:controller studupdatecontroller --plain
第2步 - 成功执行后,您将收到以下输出 -
步骤3 - 将以下代码复制到文件app / http / controllers / studupdatecontroller.php
app/http/controllers/studupdatecontroller.php
namespace app\http\controllers; use illuminate\http\request; use db; use app\http\requests; use app\http\controllers\controller; class studupdatecontroller extends controller { public function index(){ $users = db::select('select * from student'); return view('stud_edit_view',['users'=-->$users]); } public function show($id) { $users = db::select('select * from student where id = ?',[$id]); return view('stud_update',['users'=>$users]); } public function edit(request $request,$id) { $name = $request->input('stud_name'); db::update('update student set name = ? where id = ?',[$name,$id]); echo "record updated successfully. "; echo 'click here to go back.'; } }
第4步 - 创建一个名为的视图文件
resources / views / stud_edit_view.blade.php并在该文件中复制以下代码。
resources/views/stud_edit_view.blade.php
<title>view student records</title> @foreach ($users as $user) @endforeach <table border="1" class="ke-zeroborder"> <tbody><tr> <td>id</td> <td>name</td> <td>edit</td> </tr> <tr> <td>{{ $user->id }}</td> <td>{{ $user->name }}</td> <td>edit</td> </tr> </tbody> </table>
第5步 - 创建另一个名为的视图文件
resources / views / stud_update.php并在该文件中复制以下代码。
resources/views/stud_update.php
<title>student management | edit</title> <form action="/edit/<?php echo $users[0]->id; ?>" method="post"> <input type="hidden" name="_token" value="<?php echo csrf_token(); ?>" /> <table class="ke-zeroborder"> <tbody><tr> <td>name</td> <td> <input type="text" name="stud_name" value="<?php echo$users[0]->name; ?>" /> </td> </tr> <tr> <td colspan="2"> <input type="submit" value="update student" /> </td> </tr> </tbody> </table> </form>
第6步 - 在app / http / routes.php中添加以下行。
app/http/routes.php
route::get('edit-records','studupdatecontroller@index'); route::get('edit/{id}','studupdatecontroller@show'); route::post('edit/{id}','studupdatecontroller@edit');
步骤7 - 访问以下url以更新数据库中的记录。
http://localhost:8000/edit-records
步骤8 - 输出将如下图所示。
步骤9 - 单击任何记录上的编辑链接,您将被重定向到可以编辑该特定记录的页面。
步骤10 - 输出将如下图所示。
步骤11 - 编辑该记录后,您将看到如下图所示的提示。
删除记录
我们可以使用delete方法使用db facade删除记录。delete方法的语法如下表所示。
syntax | int delete(string $query, array $bindings = array()) |
parameters |
|
returns | int |
description | run a delete statement against the database. |
实例
步骤1 - 执行以下命令以创建名为studdeletecontroller的控制器。
php artisan make:controller studdeletecontroller --plain
第2步 - 成功执行后,您将收到以下输出
第3步 - 将以下代码复制到文件
app/http/controllers/studdeletecontroller.php
namespace app\http\controllers; use illuminate\http\request; use db; use app\http\requests; use app\http\controllers\controller; class studdeletecontroller extends controller { public function index(){ $users = db::select('select * from student'); return view('stud_delete_view',['users'=-->$users]); } public function destroy($id) { db::delete('delete from student where id = ?',[$id]); echo "record deleted successfully. "; echo 'click here to go back.'; } }
第4步 - 创建一个名为的视图文件
resources / views / stud_delete_view.blade.php并在该文件中复制以下代码。
resources/views/stud_delete_view.blade.php
<title>view student records</title> @foreach ($users as $user) @endforeach <table border="1" class="ke-zeroborder"> <tbody><tr> <td>id</td> <td>name</td> <td>edit</td> </tr> <tr> <td>{{ $user->id }}</td> <td>{{ $user->name }}</td> <td>delete</td> </tr> </tbody> </table>
第5步 - 在app / http / routes.php中添加以下行。
app/http/routes.php
route::get('delete-records','studdeletecontroller@index'); route::get('delete/{id}','studdeletecontroller@destroy');
步骤6 - 输出将如下图所示。
步骤7 - 单击删除链接以从数据库中删除该记录。您将被重定向到一个页面,您将在该页面中看到如下图所示的消息。
步骤8 - 单击“单击此处”链接,您将被重定向到一个页面,您将看到除已删除记录之外的所有记录。