laravel6.x数据库增删改查操作【原生 SQL篇】

Laravel 能使用原生 SQL、流畅的查询构造器 和 Eloquent ORM 在各种数据库后台与数据库进行非常简单的交互。

数据库连接配置

.env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=root

config/database.php

driver => mysql,
host => env(DB_HOST, 127.0.0.1),
port => env(DB_PORT, 3306),
database => env(DB_DATABASE, test),
username => env(DB_USERNAME, root),
password => env(DB_PASSWORD, root),

路由设置

routes/web.php

Route::get(/index, IndexController@index);

创建控制器

在项目目录中执行命令 php artisan make:controller IndexController控制器默认创建在app/Http/controllers目录下面。

编写控制器

App/Http/Controllers/IndexController.php

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;
use IlluminateSupportFacadesDB;

class IndexController extends Controller
{
          
   
	public function index() {
          
   

		// -------------------  查询 -----------------------

		$all = DB::select("select * from test");
		$one = DB::select("select * from test where id = ?",[1]);
		$value = $tests2[0]->bo_device;
		foreach ($all as $one) {
          
   
			// select 方法将始终返回一个数组,数组中的每个结果都是一个 StdClass 对象
			print_r($one->bo_device);
		}

		// -------------------  插入 -----------------------
		DB::insert(insert into test (name,age) values (?,?),[test,22]);

		// -------------------  更新 -----------------------
		$result = DB::update("update test set name = ccc where id = ?", [1]);// 返回影响行数

		// -------------------  删除 -----------------------
		$deleted = DB::delete(delete from test where id=?,[1]);// 返回影响行数

		// -------------------  数据库事务 -----------------------
		DB::transaction(function () {
          
   
			DB::update("update test set name = ddddd where id = ?", [2]);
			// throw new Exception(抛出异常, 1); 可以测试事务行不行
			DB::delete(delete from test where id=?,[6]);
		});
		
		// -------------------  手动控制数据库事务 -----------------------
		DB::beginTransaction();// 开启事务
		try{
          
   
			DB::update("update test set name = ddddd where id = ?", [2]);
			// throw new Exception(抛出异常, 1); 可以测试事务行不行
			DB::delete(delete from test where id=?,[6]);
			DB::commit();// 提交
		}catch(Exception $e) {
          
   
			DB::rollBack();// 回滚
		}

	}
}

数据库事务无效

如果事务无效的话,修改MySQL数据库引擎为InnoDB,因为MyISAM不支持事务。 先在D:phpProjectPHPTutorialMySQL中编辑my.ini 文件把里面的default-storage-engine=MyISAM改为default-storage-engine=INNODB。

查看数据库中表的引擎,命令行中的mytest是数据库名:

show table status from mytest;

在sql窗口中修改表的引擎,test是数据库名,test1是要修改引擎的数据表名:

use test;
alter table test1 engine=innodb;
经验分享 程序员 微信小程序 职场和发展