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

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

高洛峰
高洛峰원래의
2016-12-27 10:21:451356검색

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 중국어 웹사이트에 주목하세요. !

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