Laravl-5数据库操作(1)

Laravel5数据库的基本操作(1)

一、内容

  1. 数据库基础操作
  2. 原生SQL语句的curd操作
  3. SQL语句的监听
  4. 查询构造器

二、内容讲解

1.1.1:数据库配置

这里先讲下Laravel对于数据库的配置文件内容的概述:
如果项了解Laravel对oracle的链接,有兴趣的朋友们请移步(https://blog.csdn.net/q393364227/article/details/78458690

配置介绍:数据库的配置主要指的是,链接(host链接地址)、用户名(链接数据库的用户名username)、密码(链家而数据库的密码),以及对数据库的端口和数据库名的配置,这样方便再工作中修改。

数据库的配置文件路径再:config/database.php修改(一般再根目录的.env文件修改即可)

而下面这些配置是再.env文件中配置的

DB_CONNECTION=[数据库的类型 默认是MySQL]
DB_HOST=[数据库的链接host地址]
DB_PORT=[数据库的端口]
DB_DATABASE=[选择的database数据库]
DB_USERNAME=[数据库的用户名]
DB_PASSWORD=[数据库密码]

而config/database.php文件中的配置解释(全部都是环境变量,以.env文件中的环境变量为主,是根据.env文件中的配置引用到database.php文件中使用)

配置完一条SQL测试
# 原生的SQL查询数据写法
DB::select('select * from table_name');

# 如果出现数据,则证明成功
自定义配置多数据库

当你在项目中,需要使用到两个或 以上的数据库使用,可以在database.php 文件中配置多数据库操作,例如以下:

'config' => [
    'driver' => 'mysql',
    'url' => env('DATABASE_URL'),
    'host' => env('DB_HOST', '47.106.172.118'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'test1'),
    'username' => env('DB_USERNAME', 'test1'),
    'password' => env('DB_PASSWORD', 'test'),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'prefix_indexes' => true,
    'strict' => true,
    'engine' => null,
    'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
    ]) : [],
],

而自定义数据库配置的话,在写SQL语句的时候,必须指定刚刚配置的配置名称(也就是你需要用到的数据库是哪个配置)

链接实例:

DB::connection('自定义配置的变量名')->select('SQL语句');

1.1.2:原生的CURD操作

这个知识点比较简单,可以简单演示操作即可,主要是方法的介绍
对于数据库的操作可以使用DB,注意这是一个门面类

# 原生的查询方法
DB::select('select * from user');

# 原生的数据添加(默认都是防SQL注入)
# select * from userinsert into user (user) value(?)
DB::insert("insert into user (user) value(?)", ['长老阿森纳']);

# 原生的SQL 更新 update 操作(默认都是防SQL注入)
# select * from userupdate user set role_id = 1 where id = ?
DB::update("update user set role_id = 1 where id = ? ", [13]);

# 原生的SQL 删除 delete 操作
 # select * from userdelete from user where id = ?
DB::delete('delete from user where id = ?', [13]);
事务操作:

事务的处理主要是使用 Transaction 这个方法 ,例子:

# 自动提交事务
DB::transaction(function () {
      DB::update('update user set user = 123345 where id = ?', [13]);
      # 抛出异常,自动提交事务或则回滚事务
      throw new Exception('自动提交了事务或回滚事务');
});

# 手动提交事务
# 开启事务
DB::beginTransaction();
$result = DB::update('update user set user = 12321213 where id = ?', [13]);
if ($result) {
         # 自动提交事务
         DB::commit();
} else {
         #事务手动回滚
         DB::rollBack();
          throw new Exception('回滚事务');
}

1.1.3 SQL语句的监听

对于SQL的监听,方便SQL的调试、方便与耿总问题
目录:app\Http\Providers中的AppServiceProvider.php
使用在AppServiceProvider中的boot方法中写入以下代码:

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
     Schema::defaultStringLength(191);
     // 监听SQL
     DB::listen(function ($query) {
          echo $query->sql;
     });
}
分块操作:

如果你需要处理上千条数据记录,你可以考虑使用分块chunk方法,该方法一次获取结果集的一小块,并将其传递给闭包函数处理,该方法在Artisan 命令编写数千条数据的时候非常有用

# 使用chunk方法,查询的SQL语句必须配合 orderBy 排序方法一起使用,否则会无效
# chunk 方法分块查询
# 例如你现在表中有上千条数据,每次查询2条,查到没有数据为止

DB::table('user')->orderBy('id')->chunk(2, function($result) {
    dump($result);
});
总结:

对于数据库的配置信息的修改和配置更多的时候会选择操作根目录的 .env 文件(数据库的链接配置文件都在这个文件里面),而如果说需要链接多个配置数据库的时候只需要在config/database.php 添加多一个数据库的配置即可使用,使用的时候 要使用方法链接选择数据库的配置 (DB::connection(配置名称))

而链接则可以使用DB这个Facade类进行操作,但是实际上项目中很少使用原生的SQL语句的写法,在这对于原生的操作只需要了解即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值