> php教程 > PHP开发 > Laravel 프레임워크 데이터베이스 CURD 작업, 일관된 작업 요약

Laravel 프레임워크 데이터베이스 CURD 작업, 일관된 작업 요약

高洛峰
풀어 주다: 2016-12-27 10:21:45
원래의
1375명이 탐색했습니다.

1. 선택

테이블의 모든 행 검색

$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( '사용자')->select('이름');

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

어디

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

OR

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

어디 사이

$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. Connection

Joins

Query Builder를 사용할 수도 있습니다. 연결문을 작성합니다. 다음 예를 살펴보십시오.

기본 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();
로그인 후 복사

그룹화

5월 "exists" 또는 중첩된 매개변수 그룹화와 같은 고급 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 삽입 지점을 만들지 않도록 주의하세요! 원시 표현식을 생성하려면 DB:rawmethod:

Using A Raw Expression

$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);
로그인 후 복사

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

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

삽입

테이블에 레코드 삽입

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

자동 증가 ID를 사용하여 테이블에 레코드 삽입

테이블에 자동 증가 ID 필드가 있는 경우 insertGetId를 사용하여 레코드를 삽입하고 ID를 검색합니다.

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

참고: PostgreSQL insertGetId 메소드를 사용하는 경우 자동 증가 열의 이름은 "id"로 예상됩니다.

테이블에 여러 레코드 삽입

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),
));
로그인 후 복사

4. 업데이트

테이블의 레코드 업데이트

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

5.

테이블의 레코드 삭제

DB::table(&#39;users&#39;)->where(&#39;votes&#39;, &#39;<&#39;, 100)->delete();
로그인 후 복사
테이블의 모든 레코드 삭제

DB::table(&#39;users&#39;)->delete();
로그인 후 복사
테이블 삭제

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

쿼리 빌더는 두 개의 쿼리를 "통합"하는 빠른 방법도 제공합니다.

  $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();
로그인 후 복사
동일한 메서드 시그니처를 사용하여 UnionAll 메서드도 작동합니다.

비관적 잠금

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

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

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

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

$users = DB::table(&#39;users&#39;)->remember(10)->get();
로그인 후 복사
이 예에서는 쿼리 결과가 다음에 대해 캐시됩니다. 10분. 쿼리 결과가 캐시되면 데이터베이스에 대해 실행되지 않으며 결과는 애플리케이션에서 지정한 기본 캐시 드라이버에서 로드됩니다. 캐싱을 지원하는 드라이버를 사용하는 경우 캐시에 태그를 추가할 수도 있습니다:

$users = DB::table(&#39;users&#39;)->cacheTags(array(&#39;people&#39;, &#39;authors&#39;))->remember(10)->get();
로그인 후 복사
Laravel 프레임워크 데이터베이스 CURD 작업 및 일관된 작업 요약과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트에 주목하세요. !

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿