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 - 单击“单击此处”链接,您将被重定向到一个页面,您将看到除已删除记录之外的所有记录。



