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

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은 다음과 같습니다:

&#39;mysql&#39; => [
    &#39;read&#39; => [
        &#39;host&#39; => [
            &#39;192.168.1.1&#39;,
            &#39;196.168.1.2&#39;,
        ],
    ],
    &#39;write&#39; => [
        &#39;host&#39; => [
            &#39;196.168.1.3&#39;,
        ],
    ],
    &#39;sticky&#39; => true,
    &#39;driver&#39; => &#39;mysql&#39;,
    &#39;database&#39; => &#39;database&#39;,
    &#39;username&#39; => &#39;root&#39;,
    &#39;password&#39; => &#39;&#39;,
    &#39;charset&#39; => &#39;utf8mb4&#39;,
    &#39;collation&#39; => &#39;utf8mb4_unicode_ci&#39;,
    &#39;prefix&#39; => &#39;&#39;,
],
로그인 후 복사
$users = DB::connection(&#39;foo&#39;)->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으로 문의하세요.

핫 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 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

<gum> : Bubble Gum Simulator Infinity- 로얄 키를 얻고 사용하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Nordhold : Fusion System, 설명
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora : 마녀 트리의 속삭임 - Grappling Hook 잠금 해제 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

LARAVEL 소개 예 LARAVEL 소개 예 Apr 18, 2025 pm 12:45 PM

Laravel은 웹 응용 프로그램을 쉽게 구축하기위한 PHP 프레임 워크입니다. 설치 : Composer를 사용하여 전 세계적으로 Laravel CLI를 설치하고 프로젝트 디렉토리에서 응용 프로그램을 작성하는 등 다양한 기능을 제공합니다. 라우팅 : Routes/Web.php에서 URL과 핸들러 간의 관계를 정의하십시오. 보기 : 리소스/뷰에서보기를 작성하여 응용 프로그램의 인터페이스를 렌더링합니다. 데이터베이스 통합 : MySQL과 같은 데이터베이스와 상자 외 통합을 제공하고 마이그레이션을 사용하여 테이블을 작성하고 수정합니다. 모델 및 컨트롤러 : 모델은 데이터베이스 엔티티를 나타내고 컨트롤러는 HTTP 요청을 처리합니다.

CRAFT CMS의 캐싱 문제 해결 : Wiejeben/Craft-Laravel-Mix 플러그인 사용 CRAFT CMS의 캐싱 문제 해결 : Wiejeben/Craft-Laravel-Mix 플러그인 사용 Apr 18, 2025 am 09:24 AM

CRAFTCMS를 사용하여 웹 사이트를 개발할 때 특히 CSS 및 JavaScript 파일을 자주 업데이트 할 때 자주 리소스 파일 캐싱 문제가 발생하면 이전 버전의 파일이 여전히 브라우저에서 캐싱 될 수 있으므로 사용자는 최신 변경 사항을 볼 수 없습니다. 이 문제는 사용자 경험에 영향을 줄뿐만 아니라 개발 및 디버깅의 어려움을 증가시킵니다. 최근에 나는 프로젝트에서 비슷한 문제를 겪었고, 약간의 탐색 후 플러그인 Wiejeben/Craft-Laravel-Mix를 발견하여 캐싱 문제를 완벽하게 해결했습니다.

Laravel을 배우는 방법 무료로 LaRavel을 배우는 방법 Laravel을 배우는 방법 무료로 LaRavel을 배우는 방법 Apr 18, 2025 pm 12:51 PM

Laravel 프레임 워크를 배우고 싶지만 자원이나 경제적 압력이 없습니까? 이 기사는 Laravel의 무료 학습을 제공하며 온라인 플랫폼, 문서 및 커뮤니티 포럼과 같은 리소스를 사용하여 PHP 개발 여정을 시작하는 것에서 마스터까지의 탄탄한 토대를 마련하는 방법을 가르쳐줍니다.

Laravel 사용자 로그인 기능 Laravel 사용자 로그인 기능 Apr 18, 2025 pm 12:48 PM

Laravel provides a comprehensive Auth framework for implementing user login functions, including: Defining user models (Eloquent model), creating login forms (Blade template engine), writing login controllers (inheriting Auth\LoginController), verifying login requests (Auth::attempt) Redirecting after login is successful (redirect) considering security factors: hash passwords, anti-CSRF protection, rate limiting and security 헤더. 또한 Auth Framework는 비밀번호 재설정, 이메일 등록 및 확인과 같은 기능도 제공합니다. 자세한 내용은 Laravel 문서를 참조하십시오 : https://laravel.com/doc

Laravel 프레임 워크 설치 방법 Laravel 프레임 워크 설치 방법 Apr 18, 2025 pm 12:54 PM

기사 요약 :이 기사는 Laravel 프레임 워크를 쉽게 설치하는 방법에 대한 독자들을 안내하기위한 자세한 단계별 지침을 제공합니다. Laravel은 웹 애플리케이션의 개발 프로세스를 가속화하는 강력한 PHP 프레임 워크입니다. 이 자습서는 시스템 요구 사항에서 데이터베이스 구성 및 라우팅 설정에 이르기까지 설치 프로세스를 다룹니다. 이러한 단계를 수행함으로써 독자들은 라벨 프로젝트를위한 탄탄한 토대를 빠르고 효율적으로 놓을 수 있습니다.

어떤 버전의 Laravel이 있습니까? 초보자를위한 Laravel 버전을 선택하는 방법 어떤 버전의 Laravel이 있습니까? 초보자를위한 Laravel 버전을 선택하는 방법 Apr 18, 2025 pm 01:03 PM

초보자를위한 Laravel Framework 버전 선택 안내서 에서이 기사는 초보자가 많은 버전 중에서 정보에 입각 한 선택을하는 데 도움이되도록 설계된 Laravel의 버전 차이점으로 뛰어 들었습니다. 우리는 각 릴리스의 주요 기능에 중점을두고 장단점을 비교하며 초보자가 기술 수준 및 프로젝트 요구 사항에 따라 가장 적합한 Laravel 버전을 선택할 수 있도록 유용한 조언을 제공 할 것입니다. 초보자에게는 적절한 버전의 Laravel을 선택하는 것이 학습 곡선과 전반적인 개발 경험에 크게 영향을 줄 수 있기 때문에 중요합니다.

Laravel의 버전 번호를 보는 방법은 무엇입니까? Laravel의 버전 번호를 보는 방법 Laravel의 버전 번호를 보는 방법은 무엇입니까? Laravel의 버전 번호를 보는 방법 Apr 18, 2025 pm 01:00 PM

Laravel 프레임 워크에는 개발자의 다양한 요구를 충족시키기 위해 버전 번호를 쉽게 볼 수있는 내장 방법이 있습니다. 이 기사는 Composer Command Line 도구 사용, .env 파일에 액세스하거나 PHP 코드를 통해 버전 정보를 얻는 것을 포함하여 이러한 방법을 탐색합니다. 이러한 방법은 Laravel 애플리케이션의 버전 관리를 유지 관리하고 관리하는 데 필수적입니다.

비즈니스 세계에서 오라클의 역할 비즈니스 세계에서 오라클의 역할 Apr 23, 2025 am 12:01 AM

Oracle은 데이터베이스 회사 일뿐 만 아니라 클라우드 컴퓨팅 및 ERP 시스템의 리더이기도합니다. 1. Oracle은 데이터베이스에서 클라우드 서비스 및 ERP 시스템에 이르기까지 포괄적 인 솔루션을 제공합니다. 2. OracleCloud는 AWS와 Azure에 도전하여 IAA, PAAS 및 SAAS 서비스를 제공합니다. 3. E-BusinessSuite 및 FusionApplications와 같은 Oracle의 ERP 시스템은 기업이 운영을 최적화하는 데 도움이됩니다.

See all articles