Rumah rangka kerja php Laravel Pangkalan data apa yang disokong oleh laravel?

Pangkalan data apa yang disokong oleh laravel?

Feb 14, 2022 pm 03:38 PM
laravel pangkalan data

Laravel menyokong empat pangkalan data: 1. MySQL, sistem pengurusan pangkalan data hubungan 2. PostgreSQL, sistem pengurusan pangkalan data "hubungan objek" 3. SQLite, sistem Pengurusan pangkalan data relasi yang ringan; , sistem pengurusan pangkalan data hubungan.

Pangkalan data apa yang disokong oleh laravel?

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi Laravel 6, komputer Dell G3.

Laravel menyokong pertanyaan SQL asli, pembina pertanyaan yang fasih dan Eloquent ORM Operasi ini menjadikan interaksi dengan pangkalan data sangat mudah dalam pelbagai bahagian belakang pangkalan data.

Pada masa ini Laravel menyokong empat pangkalan data berikut:

  • MySQL 5.7: sistem pengurusan pangkalan data hubungan yang dibangunkan oleh syarikat MySQL AB Sweden dan dimiliki oleh Produk Oracle.

  • PostgreSQL 9.6: Sistem pengurusan pangkalan data perhubungan objek perisian percuma dengan ciri yang sangat lengkap Ia adalah sistem pengurusan pangkalan data perhubungan objek berdasarkan POSTGRES, versi 4.2, yang dibangunkan oleh Jabatan. Sains Komputer di sistem pengurusan pangkalan data Universiti California.

  • SQLite 3.8.8: Pangkalan data ringan, sistem pengurusan pangkalan data hubungan yang mematuhi ACID, yang terkandung dalam perpustakaan C yang agak kecil.

  • SQL Server 2017: Sistem pengurusan pangkalan data perhubungan yang dilancarkan oleh Microsoft

Konfigurasi

Pangkalan data fail konfigurasi berada dalam fail config/database.php Anda boleh menentukan semua konfigurasi sambungan pangkalan data dalam fail ini dan menentukan sambungan pangkalan data lalai. Fail ini menyediakan contoh kebanyakan konfigurasi pangkalan data yang disokong oleh Laravel.

Secara lalai, konfigurasi persekitaran sampel Laravel menggunakan Laravel Homestead (ia adalah mesin maya kecil yang membolehkan anda membangunkan dengan mudah menggunakan Laravel secara tempatan). Anda boleh mengubah suai fail konfigurasi ini mengikut keperluan pangkalan data tempatan.

Konfigurasi SQLite

Selepas mencipta pangkalan data SQLite baharu menggunakan arahan penciptaan seperti touch database/database.sqlite, anda boleh menggunakan laluan mutlak pangkalan data untuk mengkonfigurasi pembolehubah persekitaran kepada tunjuk ke pangkalan data yang baru dibuat ini:

DB_CONNECTION=sqlite
DB_DATABASE=/absolute/path/to/database.sqlite
Salin selepas log masuk

Untuk mendayakan kekangan kunci asing untuk sambungan SQLite, pembolehubah persekitaran DB_foreign_KEYS hendaklah ditetapkan kepada benar:

DB_FOREIGN_KEYS=true
Salin selepas log masuk

konfigurasi bentuk URL

Biasanya, sambungan pangkalan data menggunakan berbilang nilai konfigurasi, seperti host, database, username, password, dsb. Setiap nilai konfigurasi ini mempunyai pembolehubah persekitaran yang sepadan. Ini bermakna terdapat berbilang pembolehubah persekitaran yang perlu diuruskan semasa mengkonfigurasi maklumat sambungan pangkalan data pada pelayan pengeluaran.

Sesetengah pembekal pangkalan data terurus (seperti Heroku) menyediakan satu pangkalan data "URL" yang mengandungi semua maklumat sambungan untuk pangkalan data dalam satu rentetan. Contoh URL pangkalan data mungkin kelihatan seperti ini:

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

Untuk kemudahan, Laravel menyokong URL ini sebagai alternatif untuk mengkonfigurasi pangkalan data menggunakan berbilang pilihan konfigurasi. Jika pilihan konfigurasi url (atau pembolehubah persekitaran DATABASE_URL yang sepadan) ada, pilihan itu akan digunakan untuk mengekstrak sambungan pangkalan data dan maklumat kelayakan.

Baca dan tulis pemisahan

Kadangkala anda mahu penyataan SELECT menggunakan satu sambungan pangkalan data dan penyataan INSERT, UPDATE dan DELETE untuk menggunakan sambungan pangkalan data yang lain. Dalam Laravel, sama ada anda menggunakan pertanyaan asli, pembina pertanyaan atau ORM Fasih, anda boleh melaksanakannya dengan mudah.

Untuk memahami cara pemisahan baca-tulis dikonfigurasikan, mari kita lihat contoh dahulu:

'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' => '',
],
Salin selepas log masuk

Perhatikan bahawa dalam contoh di atas, tiga kekunci ditambahkan pada tatasusunan konfigurasi, masing-masing. Ia membaca, menulis dan melekat. Kedua-dua baca dan tulis mengandungi tatasusunan dengan hos utama. Pilihan pangkalan data lain untuk membaca dan menulis adalah dalam tatasusunan dengan kunci mysql.

Jika anda ingin mengatasi konfigurasi dalam tatasusunan utama, cuma ubah suai tatasusunan baca dan tulis. Jadi, dalam contoh ini: 192.168.1.1 dan 192.168.1.2 akan menyambung kepada hos sebagai "baca", manakala 192.168.1.3 akan menyambung kepada hos sebagai "tulis". Kedua-dua sambungan ini akan berkongsi pelbagai konfigurasi tatasusunan mysql, seperti kelayakan pangkalan data (nama pengguna/kata laluan), awalan, pengekodan aksara, dsb.

pilihan melekit

melekit ialah nilai pilihan yang digunakan untuk segera membaca rekod yang telah ditulis ke pangkalan data semasa kitaran permintaan semasa. Jika pilihan melekit didayakan dan operasi "tulis" dilakukan semasa kitaran permintaan semasa, sebarang operasi "baca" akan menggunakan sambungan "tulis". Ini memastikan bahawa data yang ditulis dalam kitaran permintaan yang sama boleh dibaca serta-merta, dengan itu mengelakkan masalah ketidakkonsistenan data yang disebabkan oleh kelewatan penyegerakan tuan-hamba. Walau bagaimanapun, sama ada untuk membolehkannya bergantung pada keperluan aplikasi.

Menggunakan berbilang sambungan pangkalan data

Apabila menggunakan berbilang sambungan pangkalan data, anda boleh mengakses setiap sambungan melalui kaedah sambungan fasad DB Facade. Nama parameter yang dihantar kepada kaedah sambungan hendaklah nilai dalam tatasusunan sambungan dalam fail konfigurasi config/database.php:

$users = DB::connection('foo')->select(...);
Salin selepas log masuk

Anda juga boleh menggunakan kaedah getPdo pada contoh sambungan untuk mengakses asas Contoh PDO:

$pdo = DB::connection()->getPdo();
Salin selepas log masuk

执行原生 SQL 查询

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

执行 Select 查询

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

<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
class UserController extends Controller
{
    /**
     * 显示应用程序中所有用户的列表
     *
     * @return Response
     */
    public function index()
    {
        $users = DB::select(&#39;select * from users where active = ?&#39;, [1]);
        return view(&#39;user.index&#39;, [&#39;users&#39; => $users]);
    }
}
Salin selepas log masuk

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

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

foreach ($users as $user) {
    echo $user->name;
}
Salin selepas log masuk

使用命名绑定

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

$results = DB::select(&#39;select * from users where id = :id&#39;, [&#39;id&#39; => 1]);
Salin selepas log masuk

执行 Insert 语句

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

DB::insert(&#39;insert into users (id, name) values (?, ?)&#39;, [1, &#39;Dayle&#39;]);
Salin selepas log masuk

执行 Update 语句

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

$affected = DB::update(&#39;update users set votes = 100 where name = ?&#39;, [&#39;John&#39;]);
Salin selepas log masuk

执行 Delete 语句

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

$deleted = DB::delete(&#39;delete from users&#39;);
Salin selepas log masuk

执行普通语句

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

DB::statement(&#39;drop table users&#39;);
Salin selepas log masuk

运行未预处理的语句

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

DB::unprepared(&#39;update users set votes = 100 where name = "Dries"&#39;);
Salin selepas log masuk

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

隐式提交

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

DB::unprepared(&#39;create table a (col varchar(1) null)&#39;);
Salin selepas log masuk

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

监听查询事件

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

<?php
namespace App\Providers;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
    /**
     * 注册所有应用的服务
     *
     * @return void
     */
    public function register()
    {
        //
    }
    /**
     * 引导所有应用的服务
     *
     * @return void
     */
    public function boot()
    {
        DB::listen(function ($query) {
            // $query->sql
            // $query->bindings
            // $query->time
        });
    }
}
Salin selepas log masuk

数据库事务

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

DB::transaction(function () {
    DB::table(&#39;users&#39;)->update([&#39;votes&#39; => 1]);
    DB::table(&#39;posts&#39;)->delete();
});
Salin selepas log masuk

处理死锁

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

DB::transaction(function () {
    DB::table(&#39;users&#39;)->update([&#39;votes&#39; => 1]);
    DB::table(&#39;posts&#39;)->delete();
}, 5);
Salin selepas log masuk

手动使用事务

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

DB::beginTransaction();
Salin selepas log masuk

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

DB::rollBack();
Salin selepas log masuk

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

DB::commit();
Salin selepas log masuk

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

连接到数据库 CLI

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

php artisan db
Salin selepas log masuk

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

php artisan db mysql
Salin selepas log masuk

【相关推荐:laravel视频教程

Atas ialah kandungan terperinci Pangkalan data apa yang disokong oleh laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1668
14
Tutorial PHP
1273
29
Tutorial C#
1256
24
Contoh Pengenalan Laravel Contoh Pengenalan Laravel Apr 18, 2025 pm 12:45 PM

Laravel adalah rangka kerja PHP untuk membina aplikasi web yang mudah. Ia menyediakan pelbagai ciri yang kuat termasuk: Pemasangan: Pasang Laravel CLI secara global dengan komposer dan buat aplikasi dalam direktori projek. Routing: Tentukan hubungan antara URL dan pengendali dalam laluan/web.php. Lihat: Buat pandangan dalam sumber/pandangan untuk menjadikan antara muka aplikasi. Integrasi Pangkalan Data: Menyediakan integrasi keluar-of-the-box dengan pangkalan data seperti MySQL dan menggunakan penghijrahan untuk membuat dan mengubah suai jadual. Model dan Pengawal: Model mewakili entiti pangkalan data dan proses pengawal permintaan HTTP.

Selesaikan masalah caching dalam kraf CMS: Menggunakan plug-in wiejeben/craft-laravel-mix Selesaikan masalah caching dalam kraf CMS: Menggunakan plug-in wiejeben/craft-laravel-mix Apr 18, 2025 am 09:24 AM

Apabila membangunkan laman web yang menggunakan CraftCMS, anda sering menghadapi masalah caching fail sumber, terutamanya apabila anda sering mengemas kini fail CSS dan JavaScript, versi lama fail mungkin masih di -cache oleh penyemak imbas, menyebabkan pengguna tidak melihat perubahan terkini dalam masa. Masalah ini bukan sahaja memberi kesan kepada pengalaman pengguna, tetapi juga meningkatkan kesukaran pembangunan dan debugging. Baru-baru ini, saya menghadapi masalah yang sama dalam projek saya, dan selepas beberapa penjelajahan, saya dapati plugin Wiejeben/Craft-Laravel-Mix, yang sempurna menyelesaikan masalah caching saya.

Cara Belajar Laravel Cara Belajar Laravel secara percuma Cara Belajar Laravel Cara Belajar Laravel secara percuma Apr 18, 2025 pm 12:51 PM

Mahu mempelajari rangka kerja Laravel, tetapi tidak mengalami sumber atau tekanan ekonomi? Artikel ini memberikan anda pembelajaran percuma Laravel, mengajar anda cara menggunakan sumber seperti platform dalam talian, dokumen dan forum komuniti untuk meletakkan asas yang kukuh untuk perjalanan pembangunan PHP anda dari mula menguasai.

Fungsi log masuk pengguna laravel Fungsi log masuk pengguna laravel Apr 18, 2025 pm 12:48 PM

Laravel menyediakan rangka kerja auth yang komprehensif untuk melaksanakan fungsi log masuk pengguna, termasuk: Menentukan model pengguna (model fasih), membuat borang log masuk (enjin templat bilah), menulis pengawal log masuk (mewarisi auth \ logincontroller) tajuk keselamatan. Di samping itu, rangka kerja AUTH juga menyediakan fungsi seperti menetapkan semula kata laluan, mendaftar dan mengesahkan e -mel. Untuk maklumat lanjut, sila rujuk dokumentasi Laravel: https://laravel.com/doc

Kaedah pemasangan kerangka Laravel Kaedah pemasangan kerangka Laravel Apr 18, 2025 pm 12:54 PM

Ringkasan Artikel: Artikel ini menyediakan arahan langkah demi langkah terperinci untuk membimbing pembaca tentang cara memasang rangka kerja Laravel dengan mudah. Laravel adalah rangka kerja PHP yang kuat yang mempercepat proses pembangunan aplikasi web. Tutorial ini merangkumi proses pemasangan dari keperluan sistem untuk mengkonfigurasi pangkalan data dan menyediakan penghalaan. Dengan mengikuti langkah -langkah ini, pembaca dapat dengan cepat dan cekap meletakkan asas yang kukuh untuk projek Laravel mereka.

Apa versi Laravel yang ada? Cara Memilih Versi Laravel untuk Pemula Apa versi Laravel yang ada? Cara Memilih Versi Laravel untuk Pemula Apr 18, 2025 pm 01:03 PM

Dalam Panduan Pemilihan Versi Rangka Kerja Laravel untuk pemula, artikel ini menyelam ke dalam perbezaan versi Laravel, yang direka untuk membantu pemula dalam membuat pilihan yang tepat di antara banyak versi. Kami akan memberi tumpuan kepada ciri -ciri utama setiap pelepasan, membandingkan kebaikan dan keburukan mereka, dan memberikan nasihat yang berguna untuk membantu pemula memilih versi Laravel yang paling sesuai berdasarkan tahap kemahiran dan keperluan projek mereka. Bagi pemula, memilih versi Laravel yang sesuai adalah penting kerana ia dapat memberi kesan yang signifikan kepada keluk pembelajaran mereka dan pengalaman pembangunan keseluruhan.

Peranan Oracle dalam dunia perniagaan Peranan Oracle dalam dunia perniagaan Apr 23, 2025 am 12:01 AM

Oracle bukan sahaja syarikat pangkalan data, tetapi juga pemimpin dalam pengkomputeran awan dan sistem ERP. 1. Oracle menyediakan penyelesaian yang komprehensif dari pangkalan data ke perkhidmatan awan dan sistem ERP. 2. Oraclecloud mencabar AWS dan Azure, menyediakan perkhidmatan IaaS, PaaS dan SaaS. 3. Sistem ERP Oracle seperti E-BusinessSuite dan FusionApplications membantu perusahaan mengoptimumkan operasi.

Bagaimana untuk melihat nombor versi Laravel? Cara melihat nombor versi Laravel Bagaimana untuk melihat nombor versi Laravel? Cara melihat nombor versi Laravel Apr 18, 2025 pm 01:00 PM

Rangka kerja Laravel mempunyai kaedah terbina dalam untuk melihat nombor versi dengan mudah untuk memenuhi keperluan pemaju yang berbeza. Artikel ini akan meneroka kaedah ini, termasuk menggunakan alat baris perintah komposer, mengakses fail .Env, atau mendapatkan maklumat versi melalui kod PHP. Kaedah ini adalah penting untuk mengekalkan dan menguruskan versi aplikasi Laravel.

See all articles