Laravel 프레임워크 데이터베이스의 CURD 작업 및 일관된 작업 분석

不言
풀어 주다: 2023-04-01 06:24:02
원래의
1574명이 탐색했습니다.

이 글에서는 주로 Laravel 프레임워크 데이터베이스의 CURD 작업, 일관성 있는 작업 및 체인 작업에 대한 요약을 소개합니다. 이 글에는 데이터베이스 작업에 일반적으로 사용되는 많은 방법이 포함되어 있습니다.

테이블의 모든 행 검색

$users = DB::table('users')->get();
foreach ($users as $user)
{
var_dump($user->name);
}
로그인 후 복사

테이블에서 단일 행 검색

$user = DB::table('users')->where('name', 'John')->first();
var_dump($user->name);
로그인 후 복사

단일 열의 행 검색

$name = DB::table('users')->where('name', 'John')->pluck('name');
로그인 후 복사

열 값 목록 검색 ​​

$roles = DB::table('roles')->lists('title');
로그인 후 복사

이것 메소드는 배열 헤더를 반환합니다. 또한 사용자 정의 키 열을 지정하여 배열을 반환할 수도 있습니다.

$roles = DB::table('roles')->lists('title', 'name');
로그인 후 복사

Select 절 지정

$users = DB::table('users')->select('name', 'email')->get();
 $users = DB::table('users')->distinct()->get();
 $users = DB::table('users')->select('name as user_name')->get();
로그인 후 복사

기존 쿼리에 추가된 Select 절 $query = DB::table('users') ->select( '이름');

$users = $query->addSelect('age')->get();
로그인 후 복사

where

$users = DB::table('users')->where('votes', '>', 100)->get();
로그인 후 복사

OR

$users = DB::table('users')->where('votes', '>', 100)->orWhere('name', 'John')->get();
로그인 후 복사

Where Between

$users = DB::table('users')->whereBetween('votes', array(1, 100))->get();
로그인 후 복사

Where Not Between

$users = DB::table('users')->whereNotBetween('votes', array(1, 100))->get();
로그인 후 복사

배열이 있는 곳

$users = DB::table('users')->whereIn('id', array(1, 2, 3))->get();
$users = DB::table('users')->whereNotIn('id', array(1, 2, 3))->get();
로그인 후 복사

Where Null 사용 설정되지 않은 값이 있는 레코드를 찾으려면

$users = DB::table('users')->whereNull('updated_at')->get();
로그인 후 복사

Order By, Group By, And Have

$users = DB::table('users')->orderBy('name', 'desc')->groupBy('count')->having('count', '>', 100)->get();
로그인 후 복사

Offset & Limit

$users = DB::table('users')->skip(10)->take(5)->get();
로그인 후 복사

2. Connections

Joins

Query Building 생성자는 다음과 같을 수도 있습니다. 조인 문을 작성하는 데 사용됩니다. 다음 예를 살펴보세요.

기본 Join 문

DB::table('users')
  ->join('contacts', 'users.id', '=', 'contacts.user_id')
  ->join('orders', 'users.id', '=', 'orders.user_id')
  ->select('users.id', 'contacts.phone', 'orders.price')
  ->get();
로그인 후 복사

Left Join 문

DB::table('users')
  ->leftJoin('posts', 'users.id', '=', 'posts.user_id')
  ->get();
  DB::table('users')
  ->join('contacts', function($join)
  {
  $join->on('users.id', '=', 'contacts.user_id')->orOn(...);
  })
  ->get();
  DB::table('users')
  ->join('contacts', function($join)
  {
  $join->on('users.id', '=', 'contacts.user_id')
  ->where('contacts.user_id', '>', 5);
  })
  ->get();
로그인 후 복사

III. Grouping

때로는 "exists" 또는 Nested와 같은 고급 where 절을 만들어야 할 수도 있습니다. 매개변수 그룹화. Laravel 쿼리 빌더는 다음을 처리할 수 있습니다: DB::table('users')

->where('name', '=', 'John')
->orWhere(function($query)
{
$query->where('votes', '>', 100)
->where(&#39;title&#39;, &#39;<>&#39;, &#39;Admin&#39;);
})
->get();
로그인 후 복사
위 쿼리는 다음 SQL을 생성합니다:

select * from users where name = &#39;John&#39; or (votes > 100 and title 
<> &#39;Admin&#39;)
  Exists Statements
  DB::table(&#39;users&#39;)
  ->whereExists(function($query)
  {
  $query->select(DB::raw(1))
  ->from(&#39;orders&#39;)
  ->whereRaw(&#39;orders.user_id = users.id&#39;);
  })
  ->get();
로그인 후 복사

위 쿼리는 다음 SQL을 생성합니다:

select * from userswhere exists (
select 1 from orders where orders.user_id = users.id
)
로그인 후 복사

4. 집계

쿼리 구성 컴파일러는 통계, 최대, 최소, 평균 및 합계와 같은 다양한 집계 방법도 제공합니다. 집계 방법 사용

$users = DB::table(&#39;users&#39;)->count();
$price = DB::table(&#39;orders&#39;)->max(&#39;price&#39;);
$price = DB::table(&#39;orders&#39;)->min(&#39;price&#39;);
$price = DB::table(&#39;orders&#39;)->avg(&#39;price&#39;);
$total = DB::table(&#39;users&#39;)->sum(&#39;votes&#39;);
로그인 후 복사

원시 표현식

때때로 원시 표현식 쿼리를 사용해야 할 수도 있습니다. 이러한 표현식은 쿼리 문자열에 삽입되므로 SQL 삽입 지점을 만들지 않도록 주의하세요! 열 값

$users = DB::table(&#39;users&#39;)
->select(DB::raw(&#39;count(*) as user_count, status&#39;))
->where(&#39;status&#39;, &#39;<>&#39;, 1)
->groupBy(&#39;status&#39;)
->get();
로그인 후 복사

추가 열 업데이트를 지정할 수도 있습니다.

DB::table(&#39;users&#39;)->increment(&#39;votes&#39;);
DB::table(&#39;users&#39;)->increment(&#39;votes&#39;, 5);
DB::table(&#39;users&#39;)->decrement(&#39;votes&#39;);
DB::table(&#39;users&#39;)->decrement(&#39;votes&#39;, 5);
로그인 후 복사
Inserts

Insert records into table

DB::table(&#39;users&#39;)->increment(&#39;votes&#39;, 1, array(&#39;name&#39; => &#39;John&#39;));
로그인 후 복사

Insert records into table with auto-incremented ID

, 자동 증가가 있습니다. id 필드는 insertGetId를 사용하여 레코드를 삽입하고 ID를 검색합니다.

DB::table(&#39;users&#39;)->insert(
array(&#39;email&#39; => &#39;john@example.com&#39;, &#39;votes&#39; => 0)
);
로그인 후 복사

참고: PostgreSQL insertGetId 메서드를 사용할 때 자동 증가 열의 이름은 "id"가 될 것으로 예상됩니다.

테이블에 여러 레코드 삽입

$id = DB::table(&#39;users&#39;)->insertGetId(
array(&#39;email&#39; => &#39;john@example.com&#39;, &#39;votes&#39; => 0)
);
로그인 후 복사
Four. Updates

테이블의 레코드 업데이트

DB::table(&#39;users&#39;)->insert(array(
array(&#39;email&#39; => &#39;taylor@example.com&#39;, &#39;votes&#39; => 0),
array(&#39;email&#39; => &#39;dayle@example.com&#39;, &#39;votes&#39; => 0),
));
로그인 후 복사

Five.Deletes

테이블의 레코드 삭제

DB::table(&#39;users&#39;)
->where(&#39;id&#39;, 1)
->update(array(&#39;votes&#39; => 1));
로그인 후 복사

테이블 삭제 모두 삭제 중 테이블의 레코드

DB::table(&#39;users&#39;)->where(&#39;votes&#39;, &#39;<&#39;, 100)->delete();
로그인 후 복사

DB::table(&#39;users&#39;)->delete();
로그인 후 복사
6. Unions

쿼리 작성기는 두 쿼리를 "union"하는 빠른 방법도 제공합니다.

DB::table(&#39;users&#39;)->truncate();
로그인 후 복사

UnionAll 메서드도 사용할 수 있습니다. 동일한 메서드를 사용하세요. 서명.

 비관적 잠금

 쿼리 빌더에는 SELECT 문에 도움이 되는 몇 가지 "비관적 잠금" 기능이 포함되어 있습니다. SELECT 문 "공유 잠금"을 실행하려면 sharedLock 메서드를 사용하여 쿼리할 수 있습니다.

$first = DB::table(&#39;users&#39;)->whereNull(&#39;first_name&#39;);
  $users = 
DB::table(&#39;users&#39;)->whereNull(&#39;last_name&#39;)->union($first)->get();
로그인 후 복사
SELECT 문에서 "잠금"을 업데이트하려면 lockForUpdate 메서드를 사용하여 쿼리할 수 있습니다.
DB::table(&#39;users&#39;)->where(&#39;votes&#39;, &#39;>&#39;, 
100)->sharedLock()->get();
로그인 후 복사

7. 캐시 쿼리

쉽게 캐시할 수 있습니다. 쿼리 결과는 니모닉을 사용하여 캐시됩니다.

DB::table(&#39;users&#39;)->where(&#39;votes&#39;, &#39;>&#39;, 100)->lockForUpdate()->get();
로그인 후 복사

이 예에서는 쿼리 결과가 10분 동안 캐시됩니다. 쿼리 결과가 캐시되면 데이터베이스에 대해 실행되지 않으며 결과는 애플리케이션에서 지정한 기본 캐시 드라이버에서 로드됩니다. ​캐싱을 지원하는 드라이버를 사용하는 경우 캐시에 태그를 추가할 수도 있습니다.

$users = DB::table(&#39;users&#39;)->remember(10)->get();
로그인 후 복사

위 내용은 모두의 학습에 도움이 되기를 바랍니다. PHP 중국어 웹사이트로!

관련 추천:

PHP CURL CURLOPT


의 매개변수 설명

위 내용은 Laravel 프레임워크 데이터베이스의 CURD 작업 및 일관된 작업 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!