Laravel 使用数据库

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
  • $query(string) − query to execute in database
  • $bindings(array) − values to bind with queries
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
  • $query(string) − query to execute in database
  • $bindings(array) − values to bind with queries
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
  • $query(string) − query to execute in database
  • $bindings(array) − values to bind with queries
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
  • $query(string) − query to execute in database
  • $bindings(array) − values to bind with queries
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 - 单击“单击此处”链接,您将被重定向到一个页面,您将看到除已删除记录之外的所有记录。

下一节:laravel 错误和日志

laravel 教程

相关文章