1. 읽기/쓰기 연결
때때로 SELECT 문에 하나의 데이터베이스 연결을 사용하고, 삽입, 업데이트 및 삭제 문에 다른 데이터베이스 연결을 사용하고 싶을 수도 있습니다. Laravel은 이를 쉽게 수행하며 원시 쿼리, 쿼리 빌더 또는 Eloquent ORM을 사용하든 항상 올바른 연결을 사용합니다.
읽기/쓰기 연결을 구성하는 방법은 다음 예를 살펴보겠습니다.
'mysql' => array('read' => array('host' => '192.168.1.1'),'write' => array('host' => '196.168.1.2'),'driver' => 'mysql','database' =>'database','username' => 'root','password' => '','charset' => 'utf8','collation' => 'utf8_unicode_ci','prefix' => '')
구성 배열에 읽기 및 쓰기라는 두 개의 키가 추가됩니다. 두 키 모두 하나의 키(host)를 포함하는 배열 값을 갖습니다. 기본 mysql 연결의 나머지 읽기 및 쓰기 데이터베이스 옵션은 병합된 배열이 됩니다. 따라서 기본 배열의 값을 덮어쓰려면 읽기 및 쓰기 배열에 항목을 넣으면 됩니다. 따라서 이 경우 192.168.1.1은 "읽기" 연결로 사용되고 192.168.1.2는 "쓰기" 연결로 사용됩니다. 기본 mysql 배열의 데이터베이스 자격 증명, 접두사, 문자 집합 및 기타 모든 옵션은 두 연결에서 공유됩니다.
2. 쿼리 실행
데이터베이스 연결을 구성한 후에는 DB 실행 쿼리 클래스를 사용할 수 있습니다.
Select 쿼리 실행
$results = DB::select('select * from users where id = ?', array(1));
결과 선택 메서드는 항상 배열을 반환합니다.
Insert 문 실행
DB::insert('insert into users (id, name) values (?, ?)', array(1, 'Dayle'));
Update 문 실행
DB::update('update users set votes = 100 where name = ?', array('John'));
Delete 문 실행
DB::delete('delete from users');
참고: 업데이트 및 삭제 문에서 반환된 행 수는 작업에 영향을 미칩니다.
일반 문 실행
DB::statement('drop table users');
이벤트 리스너 쿼리
DB::listening 메서드를 사용하여 이벤트 리스너를 쿼리할 수 있습니다.
DB::listen(function($sql, $bindings, $time){ //});
세 번째, 데이터베이스 트랜잭션
데이터베이스 트랜잭션에서 일련의 작업을 실행하려면 다음 트랜잭션 메서드를 사용할 수 있습니다.
DB::transaction(function(){ DB::table('users')->update(array('votes' => 1)); DB::table('posts')->delete();});
참고: 트랜잭션 종료 중에 예외가 발생하면 자동 트랜잭션이 발생합니다. 롤백
때로는 트랜잭션을 시작해야 할 수도 있습니다.
DB::beginTransaction();
롤백 방법을 통해 트랜잭션을 롤백할 수 있습니다.
DB::rollback();
마지막으로, commit 메소드를 통해 수행할 수 있습니다. 트랜잭션 커밋
DB::commit();
4. 연결에 액세스
여러 연결을 사용하는 경우 DB::Connection 메소드를 통해 액세스할 수 있습니다.
$users = DB::connection('foo')->select(...);
원래의 기본 PDO 인스턴스에 액세스할 수도 있습니다:
$pdo = DB::connection()->getPdo();
때로는 특정 데이터베이스에 다시 연결해야 할 수도 있습니다:
DB::reconnect('foo');
주어진 데이터베이스에서 연결을 끊어야 합니다. 데이터베이스가 기본 PDO 인스턴스의max_connections 제한을 초과하므로 연결 끊기 방법을 사용하십시오:
DB::disconnect('foo');
5. 쿼리 로그
기본적으로 Laravel 로그는 다음과 같습니다. 현재 요청을 실행 중인 모든 쿼리에 대해 메모리에 보관됩니다. 그러나 많은 수의 행을 삽입하는 경우와 같은 일부 경우에는 이로 인해 애플리케이션이 과도한 메모리를 사용할 수 있습니다. 로그를 비활성화하려면 비활성화QueryLog 메소드를 사용할 수 있습니다.
DB::connection()->disableQueryLog();
o 실행된 쿼리 집합을 가져오려면 getQueryLog 메소드를 사용할 수 있습니다.
$queries = DB::getQueryLog();
추가 PHP 개발 프레임워크 Laravel 데이터베이스 운영 방법 관련 기사를 요약하려면 PHP 중국어 사이트를 주목하세요!