Lavavel-Query Builder
1. 검색 결과 집합
get();
return view('user.index', ['users' => $users]);
}
}
하나의 결과만 조회
$user = DB::table('users')->where('name', 'John')->first();
echo $user->name;
만약 전체 줄의 데이터가 필요하지 않다면, 그중의 하나이다
$email = DB::table('users')->where('name', 'John')->value('email');
만약 수천 수만 개의 데이터에 직면하여 한 번에 읽을 수 없다면chunk 함수를 사용해야 한다
DB::table('users')->chunk(100, function($users) {
foreach ($users as $user) {
//
}
});
// false
DB::table('users')->chunk(100, function($users) {
// Process the records...
return false;
});
질의 열의 데이터
$titles = DB::table('roles')->lists('title');
foreach ($titles as $title) {
echo $title;
}
//
$roles = DB::table('roles')->lists('title', 'name');
foreach ($roles as $name => $title) {
echo $title;
}
count, max,min, avg, and sum
$users = DB::table('users')->count();
$price = DB::table('orders')->max('price');
$price = DB::table('orders')
->where('finalized', 1)
->avg('price');
2.[Selects]
$users = DB::table('users')->select('name', 'email as user_email')->get();
//
$users = DB::table('users')->distinct()->get();
//
$query = DB::table('users')->select('name');
$users = $query->addSelect('age')->get();
네이티브 쿼리
$users = DB::table('users')
->select(DB::raw('count(*) as user_count, status'))
->where('status', '<>', 1)
->groupBy('status')
->get();
3.Join
Inner Join
$users = DB::table('users')
->join('contacts', 'users.id', '=', 'contacts.user_id')
->join('orders', 'users.id', '=', 'orders.user_id')
->select('users.*', 'contacts.phone', 'orders.price')
->get();
Left Join
$users = 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();
where 문장 orWhere
DB::table('users')
->join('contacts', function ($join) {
$join->on('users.id', '=', 'contacts.user_id')
->where('contacts.user_id', '>', 5);
})
->get();
4.Union
UNION이 두 개의 테이블을 조합할 때 중복된 기록을 삭제합니다.UNION ALL을 사용하여 두 개 이상의 테이블을 조합할 때 결과 세트에 반복 행이 있는지 여부를 고려하지 않습니다.
$first = DB::table('users')
->whereNull('first_name');
$users = DB::table('users')
->whereNull('last_name')
->union($first)
->get();
5.where 문장
$users = DB::table('users')->where('votes', '=', 100)->get();
//===
$users = DB::table('users')->where('votes', 100)->get();
orWhere
$users = DB::table('users')
->where('votes', '>', 100)
->orWhere('name', 'John')
->get();
****whereNotBetween****
$users = DB::table('users')
->whereNotBetween('votes', [1, 100])
->get();
whereIn/whereNotIn
$users = DB::table('users')
->whereIn('id', [1, 2, 3])
->get();
whereNull/whereNotNull
$users = DB::table('users')
->whereNull('updated_at')
->get();
4. 고급 where 조회
DB::table('users')
->where('name', '=', 'John')
->orWhere(function ($query) {
$query->where('votes', '>', 100)
->where('title', '<>', 'Admin');
})
->get();
==>
select * from users where name = 'John' or (votes > 100 and title <> 'Admin')
Exists Statements
DB::table('users')
->whereExists(function ($query) {
$query->select(DB::raw(1))
->from('orders')
->whereRaw('orders.user_id = users.id');
})
->get();
==>
select * from users
where exists (
select 1 from orders where orders.user_id = users.id
)
6.[Ordering, Grouping, Limit, & Offset]
orderBy
$users = DB::table('users')
->orderBy('name', 'desc')
->get();
groupBy/having/havingRaw
$users = DB::table('users')
->groupBy('account_id')
->having('account_id', '>', 100)
->get();
$users = DB::table('orders')
->select('department', DB::raw('SUM(price) as total_sales'))
->groupBy('department')
->havingRaw('SUM(price) > 2500')
->get();
skip/take는 페이지 나누기에 사용 가능
$users = DB::table('users')->skip(10)->take(5)->get();
7.[Inserts]
DB::table('users')->insert(
['email' => '[email protected]', 'votes' => 0]
);
한 번에 여러 개 삽입
DB::table('users')->insert([
['email' => '[email protected]', 'votes' => 0],
['email' => '[email protected]', 'votes' => 0]
]);
자체 증가 id가 있는 시계
$id = DB::table('users')->insertGetId(
['email' => '[email protected]', 'votes' => 0]
);
8.[Updates]
DB::table('users')
->where('id', 1)
->update(['votes' => 1]);
증가와 감소
DB::table('users')->increment('votes');
DB::table('users')->increment('votes', 5);
DB::table('users')->decrement('votes');
DB::table('users')->decrement('votes', 5);
새 열에 사용할 나머지 열을 지정할 수 있습니다.
DB::table('users')->increment('votes', 1, ['name' => 'John']);
9.[Deletes]
DB::table('users')->where('votes', 'delete();
진짜 테이블 내용을 삭제하고 id를 리셋하려면
DB::table('users')->truncate();
10. 자물쇠
sharedLock 자물쇠 읽기, 새로운 때와는 조회할 수 없음
DB::table('users')->where('votes', '>', 100)->sharedLock()->get();
lockForUpdate 쓰기 자물쇠, 다른sharedlock 조회와 새 검색 차단
DB::table('users')->where('votes', '>', 100)->lockForUpdate()->get();
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.