广告
返回顶部
首页 > 资讯 > 精选 >laravel支持哪些数据库
  • 249
分享到

laravel支持哪些数据库

2023-06-29 04:06:00 249人浏览 八月长安
摘要

这篇文章主要介绍“laravel支持哪些数据库”,在日常操作中,相信很多人在laravel支持哪些数据库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”laravel支持哪些数据库”的疑惑有所帮助!接下来,请跟

这篇文章主要介绍“laravel支持哪些数据库”,在日常操作中,相信很多人在laravel支持哪些数据库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”laravel支持哪些数据库”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

laravel支持四种数据库:1、MySQL,一个关系型数据库管理系统;2、postgresql,一款“对象-关系”型数据库管理系统;3、sqlite,一款轻型的关系型数据库管理系统;4、SQL Server,一款关系型数据库管理系统。

教程操作环境:windows7系统、Laravel6版、Dell G3电脑。

Laravel 支持原生的 SQL 查询、流畅的查询构造器 和 Eloquent ORM 这些操作在各种数据库后台与数据库的交互变得非常简单。

目前 Laravel 支持以下四种数据库:

  • Mysql 5.7+ :一个关系型数据库管理系统,由瑞典mysql AB 公司开发,属于 oracle 旗下产品。

  • PostgreSQL 9.6+:一种特性非常齐全的自由软件的对象-关系型数据库管理系统,是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。

  • SQLite 3.8.8+:一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。

  • SQL Server 2017+ :Microsoft 公司推出的关系型数据库管理系统

配置

数据库的配置文件在 config/database.PHP 文件中,你可以在这个文件中定义所有的数据库连接配置,并指定默认的数据库连接。这个文件中提供了大部分 Laravel 能够支持的数据库配置示例。

默认情况下,Laravel 的示例 环境配置 使用了 Laravel Homestead(它是一种小型的虚拟机,能够让你很方便地在本地使用 Laravel 进行开发)。你可以根据本地数据库的需要修改这个配置文件。

SQLite 配置

在使用 touch database/database.sqlite 一类的创建命令,创建了一个新的 SQLite 数据库之后,你就可以使用数据库的绝对路径,配置环境变量来指向这个新创建的数据库:

DB_CONNECTioN=sqliteDB_DATABASE=/absolute/path/to/database.sqlite

若要为 SQLite 连接启用外键约束,应将 DB_foreign_KEYS 环境变量设置为 true:

DB_FOREIGN_KEYS=true

URLs 形式配置

通常,数据库连接使用多个配置值,例如 hostdatabaseusernamepassWord 等。这些配置值中的每一个都有其相应的环境变量。这意味着在生产服务器上配置数据库连接信息时,需要管理多个环境变量。

一些托管数据库提供程序(如 Heroku)提供单个数据库「URL」,该 URL 在单个字符串中包含数据库的所有连接信息。示例数据库 URL 可能如下所示:

mysql://root:password@127.0.0.1/forge?charset=UTF-8
这些 URLs 通常遵循标准模式约定:driver://username:password@host:port/database?options

为了方便起见,Laravel 支持这些 URLs,作为使用多个配置选项配置数据库的替代方法。如果存在 url(或相应的 DATABASE_URL 环境变量)配置选项,则将使用该选项提取数据库连接和凭证信息。

读写分离

有时候你希望 SELECT 语句使用一个数据库连接,而 INSERT、UPDATE 和 DELETE 语句使用另一个数据库连接。在 Laravel 中,无论你是使用原生查询,查询构造器,还是 Eloquent ORM,都能轻松的实现。

为了弄明白读写分离是如何配置的,我们先来看个例子:

'mysql' => [    'read' => [        'host' => [            '192.168.1.1',            '196.168.1.2',        ],    ],    'write' => [        'host' => [            '196.168.1.3',        ],    ],    'sticky' => true,    'driver' => 'mysql',    'database' => 'database',    'username' => 'root',    'password' => '',    'charset' => 'utf8mb4',    'collation' => 'utf8mb4_unicode_ci',    'prefix' => '',],

注意在以上的例子中,配置数组中增加了三个键,分别是 read、write 和 sticky。read 和 write 都包含一个键为 host 的数组。而 read 和 write 的其他数据库选项都在键为 mysql 的数组中。

如果你想重写主数组中的配置,只需要修改 read 和 write 数组即可。所以,这个例子中:192.168.1.1 和 192.168.1.2 将作为 「读」 连接主机,而 192.168.1.3 将作为 「写」 连接主机。这两个连接会共享 mysql 数组的各项配置,如数据库的凭证(用户名 / 密码),前缀,字符编码等。

sticky 选项

sticky 是一个 可选值,它用于立即读取在当前请求周期内已写入数据库的记录。若 sticky 选项被启用,并且当前请求周期内执行过「写」操作,那么任何「读」操作都将使用「写」连接。这样可确保同一个请求周期内写入的数据可以被立即读取到,从而避免主从同步延迟导致数据不一致的问题。不过是否启用它,取决于应用程序的需求。

使用多数据库连接

当使用多数据库连接时,你可以通过 DB Facade 门面的 connection 方法访问每一个连接。传递给 connection 方法的参数 name 应该是 config/database.php 配置文件中 connections 数组中的一个值:

$users = DB::connection('foo')->select(...);

你也可以使用一个连接实例上的 getPdo 方法访问底层的 PDO 实例:

$pdo = DB::connection()->getPdo();

执行原生 SQL 查询

一旦配置好数据库连接后,便可以使用 DB facade 门面运行查询。DB facade 为每种类型的查询提供了相应的方法:select,update,insert,delete 和 statement。

执行 Select 查询

你可以使用 DB Facade 的 select 方法来运行基础的查询语句:

<?phpnamespace App\Http\Controllers;use App\Http\Controllers\Controller;use Illuminate\Support\Facades\DB;class UserController extends Controller{        public function index()    {        $users = DB::select('select * from users where active = ?', [1]);        return view('user.index', ['users' => $users]);    }}

传递给 select 方法的第一个参数就是一个原生的 SQL 查询,而第二个参数则是需要绑定到查询中的参数值。通常,这些值用于约束 where 语句。参数绑定可以防止 SQL 注入。

select 方法将始终返回一个 array 数组,数组中的每个结果都是一个 stdClass 对象,可以像下面这样访问结果中的数值:

foreach ($users as $user) {    echo $user->name;}

使用命名绑定

除了使用 ? 表示参数绑定外,你还可以使用命名绑定的形式来执行一个查询:

$results = DB::select('select * from users where id = :id', ['id' => 1]);

执行 Insert 语句

你可以使用 DB Facade 的 insert 方法来执行 insert 语句。与 select 方法一样,该方法将原生 SQL 查询作为其第一个参数,并将绑定的数据作为第二个参数:

DB::insert('insert into users (id, name) values (?, ?)', [1, 'Dayle']);

执行 Update 语句

update 方法用于更新数据库中现有的记录。该方法返回该执行语句影响的行数:

$affected = DB::update('update users set votes = 100 where name = ?', ['John']);

执行 Delete 语句

delete 方法用于从数据库中删除记录。与 update 方法一样,返回受该执行语句影响的行数:

$deleted = DB::delete('delete from users');

执行普通语句

有些数据库语句不会有任何返回值。对于这些语句,你可以使用 DB Facade 的 statement 方法来运行:

DB::statement('drop table users');

运行未预处理的语句

有时你可能希望在不绑定任何值的情况下运行语句。对于这些类型的操作,可以使用 DB Facade 的 unprepared 方法:

DB::unprepared('update users set votes = 100 where name = "Dries"');

请注意,这些语句不会像上面的语句那样绑定值。它们可以打开你的应用程序进行 SQL 注入,应该非常小心地使用。

隐式提交

事务中使用 DB 外观的 statement 和 unprepared 方法时,必须小心避免导致 [隐式提交] 的语句 (https://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html)。 这些语句将导致数据库引擎间接提交整个事务,从而使 Laravel 不知道数据库的事务级别。这种语句的一个例子是创建数据库表:

DB::unprepared('create table a (col varchar(1) null)');

请参考 MySQL 手册中的触发隐式提交的所有语句列表。

监听查询事件

如果你想监控程序执行的每一个 SQL 查询,你可以使用 listen 方法。这个方法对于记录查询或调试非常有用。你可以在 服务提供器 中注册你的查询监听器:

<?phpnamespace App\Providers;use Illuminate\Support\Facades\DB;use Illuminate\Support\ServiceProvider;class AppServiceProvider extends ServiceProvider{        public function reGISter()    {        //    }        public function boot()    {        DB::listen(function ($query) {            // $query->sql            // $query->bindings            // $query->time        });    }}

数据库事务

你可以使用 DB facade 的 transaction 方法在数据库事务中运行一组操作。如果事务的闭包 Closure 中出现一个异常,事务将会回滚。如果事务闭包 Closure 执行成功,事务将自动提交。一旦你使用了 transaction, 就不必担心手动回滚或提交的问题:

DB::transaction(function () {    DB::table('users')->update(['votes' => 1]);    DB::table('posts')->delete();});

处理死锁

transaction 方法接受一个可选的第二个参数,该参数用来表示事务发生死时重复执行的次数。一旦定义的次数尝试完毕,就会抛出一个异常:

DB::transaction(function () {    DB::table('users')->update(['votes' => 1]);    DB::table('posts')->delete();}, 5);

手动使用事务

如果你想要手动开始一个事务,并且对回滚和提交能够完全控制,那么你可以使用 DB Facade 的 beginTransaction 方法:

DB::beginTransaction();

你可以使用 rollBack 方法回滚事务:

DB::rollBack();

最后,你可以使用 commit 方法提交事务:

DB::commit();

技巧:DB facade 的事务方法同样适用于 查询构造器 和 Eloquent ORM。

连接到数据库 CLI

如果要连接到数据库的 CLI,可以使用 db Artisan 命令:

php artisan db

如果需要,可以指定数据库连接名称以连接到不是默认连接的数据库连接:

php artisan db mysql

到此,关于“laravel支持哪些数据库”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: laravel支持哪些数据库

本文链接: https://www.lsjlt.com/news/322524.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • laravel支持哪些数据库
    这篇文章主要介绍“laravel支持哪些数据库”,在日常操作中,相信很多人在laravel支持哪些数据库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”laravel支持哪些数据库”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-29
  • golang支持哪些数据库
    golang支持的数据库有:1.MySQL,关系型数据库管理系统;2.Oracle,关系数据库管理系统;3.SQLite,轻型数据库;4.MongoDB,基于分布式文件存储的数据库;5.PostgreSQL,对象关系型数据库管理系统;6.S...
    99+
    2022-10-08
  • navicat支持哪些数据库
    这篇文章主要介绍了navicat支持哪些数据库,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Navicat是一套快速、可靠并价格相当便宜的数...
    99+
    2022-10-18
  • php可以支持哪些数据库
    php中支持的数据库有MySQL、Oracle、MongoDB和SQLite常见的几种MySQLMySQL是最流行的关系型数据库管理系统之一,MySQL采用了双授权政策,可以将数据保存在不同的表中,从而增加数据库的速度和灵活性,具有体积小、...
    99+
    2022-10-05
  • navicat支持的数据库有哪些
    这篇文章主要介绍了navicat支持的数据库有哪些,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。  Navicat是一套快速、可靠并价格相宜的数...
    99+
    2022-10-18
  • thinkphp支持的数据库有哪些
    本篇内容介绍了“thinkphp支持的数据库有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!thinkphp支持的数据库有MySql、M...
    99+
    2023-06-22
  • 阿里云rds支持哪些数据库
    1. 引言 阿里云RDS(Relational DatabaseService)是阿里云提供的一种基于云的托管式关系型数据库服务。它支持多种数据库引擎,包括MySQL、SQLServer、PostgreSQL和MariaDB等。本文将介绍阿...
    99+
    2023-12-28
    阿里 数据库 rds
  • JDBC支持哪些数据类型
    JDBC(Java数据库连接)是Java语言中用于与关系型数据库进行交互的API。JDBC支持以下常见的数据类型:1. 整数类型:包...
    99+
    2023-10-10
    JDBC
  • Flink支持哪些数据类型?
    目录一、支持的数据类型二、Flink之Tuple类型三、Tuple的使用四、Flink之POJO类型五、Flink之基本类型六、Flink之通用类型七、Flink之值类型Values...
    99+
    2022-11-12
  • JDBC支持哪些数据类型?
    JDBC 提供对几乎所有 SQL 数据类型的支持 每当 JDBC 驱动程序收到来自 Java 应用程序的调用时,它都会将其中的 Java 数据类型转换为相应的 SQL 数据类型。转换过程遵循默认映射。以下是 JDBC 支持的数据类型及其对应...
    99+
    2023-10-22
  • 阿里云支持哪些数据库管理系统?
    阿里云作为国内最大的云计算服务提供商,提供了丰富的云服务,其中包括数据库管理系统的支持。本文将详细介绍阿里云支持的数据库管理系统,帮助您更好地选择和使用数据库服务。 阿里云支持的数据库管理系统主要包括以下几种:MySQL数据库:MySQL是...
    99+
    2023-11-12
    阿里 数据库管理系统
  • mysql数据库支不支持like
    这篇文章主要介绍了mysql数据库支不支持like,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql支持like,like可以对任意多字符...
    99+
    2022-10-18
  • NSS支持的数据库
    NSS,简写自Name Service Switch。我把它译为“名字服务中心”。 在*nix操作系统中,NSS是C语言库(Library C或者glibc)的一部分,用以寻找名字。比如说,我们运行ls -lh查看一个目录中的文件列表,可...
    99+
    2020-01-01
    NSS支持的数据库
  • MySQL支持哪些SQL数值数据类型
    这篇文章给大家分享的是有关MySQL支持哪些SQL数值数据类型的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。  MySQL中定义数据字段的类型对你数据库的优化是非常重要的。  M...
    99+
    2022-10-18
  • Flink支持的数据类型有哪些
    这篇文章将为大家详细讲解有关Flink支持的数据类型有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、支持的数据类型Flink 对可以在 DataSet 或 DataStream 中的...
    99+
    2023-06-15
  • Spring框架支持哪些数据类型?
    Spring框架是一个流行的Java开发框架,它提供了大量的功能和组件来简化Java应用程序的开发。在Spring框架中,数据类型是一个重要的概念,因为它们决定了应用程序可以处理哪些类型的数据。在本文中,我们将讨论Spring框架支持哪些数...
    99+
    2023-09-20
    数据类型 laravel spring
  • Redis支持的数据类型有哪些
    这篇文章主要介绍Redis支持的数据类型有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),s...
    99+
    2022-10-18
  • Mysql支持的数据类型有哪些
    这篇文章将为大家详细讲解有关Mysql支持的数据类型有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一.数值类型Mysql支持所有标准SQL中的数值类型,其中包括严格...
    99+
    2022-10-18
  • redis支持的数据结构有哪些
    Redis支持以下数据结构:1. 字符串(String):用于存储字符串类型的数据。2. 列表(List):有序的字符串列表,可以在...
    99+
    2023-08-23
    redis
  • python不支持的数据结构有哪些
    python不支持char和byte类型的数据结构python中没有char和byte类型来保存单一字符或8比特整数,python中支持int、float、str、list、tuple、dict、set七种数据结构。...
    99+
    2022-10-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作