Inhaltsverzeichnis
1、简介
配置
2、运行原生 SQL 查询
运行 Select 查询
使用命名绑定
运行插入语句
运行更新语句
运行删除语句
运行一个通用语句
监听查询事件
3、数据库事务
手动使用事务
4、使用多个数据库连接
Heim Backend-Entwicklung PHP-Tutorial [ Laravel 5.2 文档 ] 数据库 -- 起步

[ Laravel 5.2 文档 ] 数据库 -- 起步

Jun 23, 2016 pm 01:19 PM

1、简介

Laravel让连接多种数据库以及对数据库进行查询变得非常简单,不论使用原生 SQL、还是查询构建器,还是 Eloquent ORM。目前,Laravel 支持四种类型的数据库系统:

  • MySQL
  • Postgres
  • SQLite
  • SQL Server

配置

Laravel 让连接数据库和运行查询都变得非常简单。应用的数据库配置位于 config/database.php。在该文件中你可以定义所有的数据库连接,并指定哪个连接是默认连接。该文件中提供了所有支持数据库系统的配置示例。

默认情况下,Laravel 示例环境配置已经为 Laravel Homestead做好了设置,当然,你也可以按照需要为本地的数据库修改该配置。

读/写连接

有时候你希望使用一个数据库连接做查询,另一个数据库连接做插入、 更新和删除,Laravel 使得这件事情轻而易举,不管你用的是原生 SQL,还是查询构建器,还是 Eloquent ORM,合适的连接总是会被使用。

想要知道如何配置读/写连接,让我们看看下面这个例子:

'mysql' => [    'read' => [        'host' => '192.168.1.1',    ],    'write' => [        'host' => '196.168.1.2'    ],    'driver'    => 'mysql',    'database'  => 'database',    'username'  => 'root',    'password'  => '',    'charset'   => 'utf8',    'collation' => 'utf8_unicode_ci',    'prefix'    => '',],
Nach dem Login kopieren

注意我们在配置数组中新增了两个键: read和 write,这两个键都对应一个包含单个键“host”的数组,读/写连接的其它数据库配置选项都共用 mysql 的主数组配置。

如果我们想要覆盖主数组中的配置,只需要将相应配置项放到 read和 write数组中即可。在本例中, 192.168.1.1将被用作“读”连接,而 192.168.1.2将被用作“写”连接。两个数据库连接的凭证(用户名/密码)、前缀、字符集以及其它配置将会共享 mysql数组中的设置。

2、运行原生 SQL 查询

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

运行 Select 查询

运行一个最基本的查询,可以使用 DB门面的 select方法:

<?phpnamespace App\Http\Controllers;use DB;use App\Http\Controllers\Controller;class UserController extends Controller{    /**     * 显示用户列表     *     * @return Response     */    public function index()    {        $users = DB::select('select * from users where active = ?', [1]);        return view('user.index', ['users' => $users]);    }}
Nach dem Login kopieren

传递给 select方法的第一个参数是原生的SQL语句,第二个参数需要绑定到查询的参数绑定,通常,这些都是 where字句约束中的值。参数绑定可以避免SQL注入攻击。

select方法以数组的形式返回结果集,数组中的每一个结果都是一个PHP StdClass对象,从而允许你像下面这样访问结果值:

foreach ($users as $user) {    echo $user->name;}
Nach dem Login kopieren

使用命名绑定

除了使用 ?占位符来代表参数绑定外,还可以使用命名绑定来执行查询:

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

运行插入语句

使用 DB门面的 insert方法执行插入语句。和 select一样,改方法将原生SQL语句作为第一个参数,将绑定作为第二个参数:

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

运行更新语句

update方法用于更新数据库中已存在的记录,该方法返回受更新语句影响的行数:

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

运行删除语句

delete方法用于删除数据库中已存在的记录,和 update一样,该语句返回被删除的行数:

$deleted = DB::delete('delete from users');
Nach dem Login kopieren

运行一个通用语句

有些数据库语句不返回任何值,对于这种类型的操作,可以使用 DB门面的 statement方法:

DB::statement('drop table users');
Nach dem Login kopieren

监听查询事件

如果你想要获取应用中每次 SQL 语句的执行,可以使用 listen方法,该方法对查询日志和调试非常有用,你可以在服务提供者中注册查询监听器:

<?phpnamespace App\Providers;use DB;use Illuminate\Support\ServiceProvider;class AppServiceProvider extends ServiceProvider{    /**     * 启动所有应用服务     *     * @return void     */    public function boot()    {        DB::listen(function($sql, $bindings, $time) {            //        });    }    /**     * 注册服务提供者     *     * @return void     */    public function register()    {        //    }}
Nach dem Login kopieren

3、数据库事务

想要在一个数据库事务中运行一连串操作,可以使用 DB门面的 transaction方法,如果事务闭包中抛出异常,事务将会自动回滚。如果闭包执行成功,事务将会自动提交。使用 transaction方法时不需要担心手动回滚或提交:

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

手动使用事务

如果你想要手动开始事务从而对回滚和提交有一个完整的控制,可以使用 DB门面的 beginTransaction方法:

DB::beginTransaction();
Nach dem Login kopieren

你可以通过 rollBack方法回滚事务:

DB::rollBack();
Nach dem Login kopieren

最后,你可以通过 commit方法提交事务:

DB::commit();
Nach dem Login kopieren

注意:使用 DB门面的事务方法还可以用于控制查询构建器和 Eloquent ORM 的事务。

4、使用多个数据库连接

使用多个数据库连接的时候,可以使用 DB门面的 connection方法访问每个连接。传递给 connection方法的连接名对应配置文件 config/database.php中相应的连接:

$users = DB::connection('foo')->select(...);
Nach dem Login kopieren

你还可以通过连接实例上的 getPdo方法底层原生的 PDO 实例:

$pdo = DB::connection()->getPdo();
Nach dem Login kopieren
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Arbeiten mit Flash -Sitzungsdaten in Laravel Arbeiten mit Flash -Sitzungsdaten in Laravel Mar 12, 2025 pm 05:08 PM

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Mar 14, 2025 am 11:42 AM

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Mar 12, 2025 pm 05:09 PM

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

12 Beste PHP -Chat -Skripte auf Codecanyon 12 Beste PHP -Chat -Skripte auf Codecanyon Mar 13, 2025 pm 12:08 PM

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

Erklären Sie das Konzept der späten statischen Bindung in PHP. Erklären Sie das Konzept der späten statischen Bindung in PHP. Mar 21, 2025 pm 01:33 PM

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu. Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu. Mar 28, 2025 pm 05:12 PM

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.

Wie sende ich eine Postanforderung mit JSON -Daten mithilfe der Curl -Bibliothek von PHP? Wie sende ich eine Postanforderung mit JSON -Daten mithilfe der Curl -Bibliothek von PHP? Apr 01, 2025 pm 03:12 PM

Senden von JSON -Daten mithilfe der Curl -Bibliothek von PHP in der PHP -Entwicklung müssen häufig mit externen APIs interagieren. Eine der gängigen Möglichkeiten besteht darin, die Curl Library zu verwenden, um Post � ...

See all articles