찾다
PHP 프레임워크Laravellaravel은 어떤 데이터베이스를 지원합니까?

laravel은 어떤 데이터베이스를 지원합니까?

Feb 14, 2022 pm 03:38 PM
laravel데이터 베이스

Laravel은 4가지 데이터베이스를 지원합니다: 1. 관계형 데이터베이스 관리 시스템인 MySQL 2. "객체 관계형" 데이터베이스 관리 시스템인 PostgreSQL 3. 경량 관계형 데이터베이스 관리 시스템인 SQLite 데이터베이스 관리 시스템.

laravel은 어떤 데이터베이스를 지원합니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, Laravel 6 버전, Dell G3 컴퓨터.

Laravel은 기본 SQL 쿼리, Fluent 쿼리 빌더 및 Eloquent ORM을 지원하므로 다양한 데이터베이스 백엔드에서 데이터베이스와 매우 간단하게 상호 작용할 수 있습니다.

현재 Laravel은 다음 네 가지 데이터베이스를 지원합니다:

  • MySQL 5.7+: 스웨덴 MySQL AB 회사가 개발한 관계형 데이터베이스 관리 시스템이자 Oracle 제품입니다.

  • PostgreSQL 9.6+: 매우 완벽한 기능을 갖춘 무료 소프트웨어 객체 관계형 데이터베이스 관리 시스템입니다. 이는 캘리포니아 대학교 컴퓨터 과학과에서 개발한 POSTGRES 버전 4.2를 기반으로 하는 객체 관계형 데이터베이스 관리 시스템입니다. .

  • SQLite 3.8.8+: 상대적으로 작은 C 라이브러리에 포함된 ACID 호환 관계형 데이터베이스 관리 시스템인 경량 데이터베이스입니다.

  • SQL Server 2017+: Microsoft에서 출시한 관계형 데이터베이스 관리 시스템

구성

데이터베이스 구성 파일은 config/database.php 파일에 있습니다. 이 파일에서 모든 데이터베이스를 정의할 수 있습니다. 기본 데이터베이스 연결을 지정합니다. 이 파일은 Laravel이 지원하는 대부분의 데이터베이스 구성의 예를 제공합니다.

기본적으로 Laravel의 샘플 환경 구성은 Laravel Homestead(로컬에서 Laravel을 사용하여 쉽게 개발할 수 있는 작은 가상 머신)를 사용합니다. 로컬 데이터베이스의 필요에 따라 이 구성 파일을 수정할 수 있습니다.

SQLite 구성

touch Database/database.sqlite와 같은 생성 명령을 사용하여 새 SQLite 데이터베이스를 생성한 후 데이터베이스의 절대 경로를 사용하여 환경 변수가 가리키도록 구성할 수 있습니다. 새로 생성된 데이터베이스:touch database/database.sqlite 一类的创建命令,创建了一个新的 SQLite 数据库之后,你就可以使用数据库的绝对路径,配置环境变量来指向这个新创建的数据库:

DB_CONNECTION=sqlite
DB_DATABASE=/absolute/path/to/database.sqlite

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

DB_FOREIGN_KEYS=true

URLs 形式配置

通常,数据库连接使用多个配置值,例如 hostdatabaseusernamepassword

mysql://root:password@127.0.0.1/forge?charset=UTF-8

SQLite 연결에 대한 외래 키 제약 조건을 활성화하려면 DB_foreign_KEYS 환경 변수를 true로 설정해야 합니다.

这些 URLs 通常遵循标准模式约定:
driver://username:password@host:port/database?options

URLs form 구성

일반적으로 데이터베이스 연결은 여러 구성 값을 사용합니다. 예: 호스트, 데이터베이스, 사용자 이름, 비밀번호 등 이러한 각 구성 값에는 해당 환경 변수가 있습니다. 이는 프로덕션 서버에서 데이터베이스 연결 정보를 구성할 때 관리해야 할 환경 변수가 여러 개 있다는 것을 의미합니다.

Heroku와 같은 일부 관리형 데이터베이스 제공업체는 데이터베이스에 대한 모든 연결 정보를 단일 문자열로 포함하는 단일 데이터베이스 "URL"을 제공합니다. 샘플 데이터베이스 URL은 다음과 같습니다:

'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' => '',
],
$users = DB::connection('foo')->select(...);

편의를 위해 Laravel은 여러 구성 옵션을 사용하여 데이터베이스를 구성하는 대신 이러한 URL을 지원합니다. url(또는 해당 DATABASE_URL 환경 변수) 구성 옵션이 있는 경우 해당 옵션은 데이터베이스 연결 및 자격 증명 정보를 추출하는 데 사용됩니다.

읽기 및 쓰기 분리

때때로 SELECT 문이 하나의 데이터베이스 연결을 사용하고 INSERT, UPDATE 및 DELETE 문이 다른 데이터베이스 연결을 사용하기를 원할 때가 있습니다. Laravel에서는 기본 쿼리, 쿼리 빌더 또는 Eloquent ORM을 사용하여 쉽게 구현할 수 있습니다.

읽기-쓰기 분리가 어떻게 구성되는지 이해하기 위해 먼저 예를 살펴보겠습니다.

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

위 예에서는 구성 배열에 읽기, 쓰기, 고정이라는 세 개의 키가 추가되었습니다. 읽기와 쓰기 모두 키 호스트가 있는 배열을 포함합니다. 읽기 및 쓰기에 대한 다른 데이터베이스 옵션은 mysql 키가 있는 배열에 있습니다.

기본 어레이의 구성을 재정의하려면 읽기 및 쓰기 어레이를 수정하면 됩니다. 따라서 이 예에서 192.168.1.1 및 192.168.1.2는 "읽기"로 호스트에 연결되고, 192.168.1.3은 "쓰기"로 호스트에 연결됩니다. 이 두 연결은 데이터베이스 자격 증명(사용자 이름/비밀번호), 접두사, 문자 인코딩 등과 같은 mysql 배열의 다양한 구성을 공유합니다.

sticky 옵션 ​​

sticky는 현재 요청 주기 동안 데이터베이스에 기록된 레코드를 즉시 읽는 데 사용되는 선택적 값입니다. 고정 옵션이 활성화되고 현재 요청 주기 동안 "쓰기" 작업이 수행되는 경우 모든 "읽기" 작업은 "쓰기" 연결을 사용합니다. 이를 통해 동일한 요청 주기에 기록된 데이터를 즉시 읽을 수 있으므로 마스터-슬레이브 동기화 지연으로 인해 발생하는 데이터 불일치 문제를 방지할 수 있습니다. 그러나 활성화 여부는 애플리케이션의 요구 사항에 따라 다릅니다.

🎜다중 데이터베이스 연결 사용🎜🎜🎜다중 데이터베이스 연결을 사용할 경우 DB Facade Facade의 연결 방식을 통해 각 연결에 접근할 수 있습니다. 연결 메소드에 전달된 매개변수 이름은 config/database.php 구성 파일의 연결 배열에 있는 값이어야 합니다: 🎜
<?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]);
    }
}
🎜 연결 인스턴스에서 getPdo 메소드를 사용하여 기본 PDO 인스턴스에 액세스할 수도 있습니다: 🎜
$pdo = DB::connection()->getPdo();

执行原生 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]);
    }
}

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

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

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

使用命名绑定

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

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

执行 Insert 语句

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

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

执行 Update 语句

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

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

执行 Delete 语句

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

$deleted = DB::delete(&#39;delete from users&#39;);

执行普通语句

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

DB::statement(&#39;drop table users&#39;);

运行未预处理的语句

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

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

请注意,这些语句不会像上面的语句那样绑定值。它们可以打开你的应用程序进行 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;);

请参考 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
        });
    }
}

数据库事务

你可以使用 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();
});

处理死锁

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

DB::transaction(function () {
    DB::table(&#39;users&#39;)->update([&#39;votes&#39; => 1]);
    DB::table(&#39;posts&#39;)->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视频教程

위 내용은 laravel은 어떤 데이터베이스를 지원합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Laravel의 주요 기능 : 백엔드 개발Laravel의 주요 기능 : 백엔드 개발Apr 15, 2025 am 12:14 AM

백엔드 개발에서 Laravel의 핵심 기능에는 라우팅 시스템, eloquentorm, 마이그레이션 기능, 캐시 시스템 및 큐 시스템이 포함됩니다. 1. 라우팅 시스템은 URL 매핑을 단순화하고 코드 구성 및 유지 보수를 향상시킵니다. 2. ELOQUENTORM은 객체 지향 데이터 작업을 제공하여 개발 효율성을 향상시킵니다. 3. 마이그레이션 함수는 버전 제어를 통해 데이터베이스 구조를 관리하여 일관성을 보장합니다. 4. 캐시 시스템은 데이터베이스 쿼리를 줄이고 응답 속도를 향상시킵니다. 5. 큐 시스템은 대규모 데이터를 효과적으로 처리하고, 사용자 요청을 차단하지 않으며, 전반적인 성능을 향상시킵니다.

Laravel의 백엔드 기능 : 데이터베이스, 논리 등Laravel의 백엔드 기능 : 데이터베이스, 논리 등Apr 14, 2025 am 12:04 AM

Laravel은 백엔드 개발에서 강력하게 수행되며 Eloquentorm, 컨트롤러 및 서비스 클래스를 통해 데이터베이스 작업을 단순화하고 대기열, 이벤트 및 기타 기능을 제공합니다. 1) Eloquentorm은 쿼리를 단순화하기 위해 모델을 통해 데이터베이스 테이블을 맵핑합니다. 2) 비즈니스 로직은 모듈성 및 유지 관리를 향상시키기 위해 컨트롤러 및 서비스 클래스에서 처리됩니다. 3) 큐 시스템과 같은 다른 기능은 복잡한 요구를 처리하는 데 도움이됩니다.

Laravel의 다양성 : 간단한 사이트에서 복잡한 시스템에 이르기까지Laravel의 다양성 : 간단한 사이트에서 복잡한 시스템에 이르기까지Apr 13, 2025 am 12:13 AM

Laravel Development Project는 다양한 크기와 복잡성의 요구에 맞게 유연성과 힘으로 인해 선정되었습니다. Laravel은 간단한 블로그에서 복잡한 엔터프라이즈 수준 시스템에 이르기까지 라우팅 시스템, Eloquentorm, Artisan Command Line 및 기타 기능을 제공합니다.

Laravel (PHP) vs. Python : 개발 환경 및 생태계Laravel (PHP) vs. Python : 개발 환경 및 생태계Apr 12, 2025 am 12:10 AM

개발 환경과 생태계에서 Laravel과 Python의 비교는 다음과 같습니다. 1. Laravel의 개발 환경은 간단하며 PHP와 작곡가 만 필요합니다. Laravelforge와 같은 풍부한 확장 패키지를 제공하지만 확장 패키지 유지 보수는시기 적절하지 않을 수 있습니다. 2. 파이썬의 개발 환경도 간단하며 파이썬과 PIP 만 필요합니다. 생태계는 거대하고 여러 분야를 다루지 만 버전 및 종속성 관리는 복잡 할 수 있습니다.

Laravel 및 백엔드 : 파워링 웹 응용 프로그램 논리Laravel 및 백엔드 : 파워링 웹 응용 프로그램 논리Apr 11, 2025 am 11:29 AM

Laravel은 백엔드 논리에서 어떻게 중요한 역할을합니까? 라우팅 시스템, eloquentorm, 인증 및 승인, 이벤트 및 청취자, 성능 최적화를 통해 백엔드 개발을 단순화하고 향상시킵니다. 1. 라우팅 시스템은 URL 구조의 정의 및 요청 처리 로직을 정의 할 수 있습니다. 2. eloquentorm은 데이터베이스 상호 작용을 단순화합니다. 3. 인증 및 인증 시스템은 사용자 관리에 편리합니다. 4. 이벤트와 리스너는 느슨하게 결합 된 코드 구조를 구현합니다. 5. 성능 최적화는 캐싱 및 대기열을 통한 응용 프로그램 효율성을 향상시킵니다.

Laravel이 왜 그렇게 인기가 있습니까?Laravel이 왜 그렇게 인기가 있습니까?Apr 02, 2025 pm 02:16 PM

Laravel의 인기에는 단순화 된 개발 프로세스, 쾌적한 개발 환경 및 풍부한 기능이 포함됩니다. 1) PHP의 유연성을 결합하여 Rubyonrails의 설계 철학을 흡수합니다. 2) 개발 효율성을 향상시키기 위해 Eloquentorm, Blade Template Engine 등과 같은 도구를 제공하십시오. 3) MVC 아키텍처 및 종속성 주입 메커니즘은 코드를보다 모듈화적이고 테스트 가능하게 만듭니다. 4) 캐싱 시스템 및 모범 사례와 같은 강력한 디버깅 도구 및 성능 최적화 방법을 제공합니다.

어느 것이 더 낫습니까, 장고 또는 라벨?어느 것이 더 낫습니까, 장고 또는 라벨?Mar 28, 2025 am 10:41 AM

Django와 Laravel은 모두 풀 스택 프레임 워크입니다. Django는 Python 개발자 및 복잡한 비즈니스 논리에 적합한 반면 Laravel은 PHP 개발자 및 우아한 구문에 적합합니다. 1. Django는 파이썬을 기반으로하며 빠른 개발 및 높은 동시성에 적합한 "배터리 완성"철학을 따릅니다. 2. Laravel은 PHP를 기반으로하며 개발자 경험을 강조하며 중소형 프로젝트에 적합합니다.

더 나은 PHP 또는 Laravel은 무엇입니까?더 나은 PHP 또는 Laravel은 무엇입니까?Mar 27, 2025 pm 05:31 PM

Laravel은 PHP 기반 프레임 워크이기 때문에 PHP와 Laravel은 직접 비교할 수 없습니다. 1.PHP는 소규모 프로젝트 또는 빠른 프로토 타이핑에 적합하고 간단하고 직접적이기 때문에 적합합니다. 2. Laravel은 대규모 프로젝트 또는 효율적인 개발에 적합하지만 풍부한 기능과 도구를 제공하지만 가파른 학습 곡선을 가지고 있으며 순수한 PHP만큼 좋지 않을 수 있습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음