최신판 |
당신의 편집 |
560번째 줄: |
560번째 줄: |
|
| |
|
| ===추가 Where 절=== | | ===추가 Where 절=== |
| ;whereBetween / orWhereBetween
| |
| <code>whereBetween</code> 메소드는 컬럼의 값이 두 값 사이에 있는지 확인합니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| $users = DB::table('users')
| |
| ->whereBetween('votes', [1, 100])
| |
| ->get();
| |
| </syntaxhighlight>
| |
|
| |
| ;whereNotBetween / orWhereNotBetween
| |
| <code>whereNotBetween</code> 메소드는 컬럼의 값이 두 값 사이에 있지 않은지 확인합니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| $users = DB::table('users')
| |
| ->whereNotBetween('votes', [1, 100])
| |
| ->get();
| |
| </syntaxhighlight>
| |
|
| |
| ;whereBetweenColumns / whereNotBetweenColumns / orWhereBetweenColumns / orWhereNotBetweenColumns
| |
| <code>whereBetweenColumns</code> 메소드는 같은 테이블 행에 있는 두 컬럼 값 사이에 있는지 확인합니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| $patients = DB::table('patients')
| |
| ->whereBetweenColumns('weight', ['minimum_allowed_weight', 'maximum_allowed_weight'])
| |
| ->get();
| |
| </syntaxhighlight>
| |
|
| |
| <code>whereNotBetweenColumns</code> 메소드는 같은 테이블 행에 있는 두 컬럼 값 사이에 있지 않은지 확인합니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| $patients = DB::table('patients')
| |
| ->whereNotBetweenColumns('weight', ['minimum_allowed_weight', 'maximum_allowed_weight'])
| |
| ->get();
| |
| </syntaxhighlight>
| |
|
| |
| ;whereIn / whereNotIn / orWhereIn / orWhereNotIn
| |
| <code>whereIn</code> 메소드는 주어진 컬럼의 값이 주어진 배열 내에 있는지 확인합니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| $users = DB::table('users')
| |
| ->whereIn('id', [1, 2, 3])
| |
| ->get();
| |
| </syntaxhighlight>
| |
|
| |
| <code>whereNotIn</code> 메소드는 주어진 컬럼의 값이 주어진 배열 내에 없는지 확인합니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| $users = DB::table('users')
| |
| ->whereNotIn('id', [1, 2, 3])
| |
| ->get();
| |
| </syntaxhighlight>
| |
|
| |
| <code>whereIn</code> 메소드의 두 번째 인자로 쿼리 객체를 제공할 수도 있습니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| $activeUsers = DB::table('users')->select('id')->where('is_active', 1);
| |
|
| |
| $users = DB::table('comments')
| |
| ->whereIn('user_id', $activeUsers)
| |
| ->get();
| |
| </syntaxhighlight>
| |
|
| |
| 위의 예는 다음 SQL을 생성합니다:
| |
|
| |
| <syntaxhighlight lang='sql'>
| |
| select * from comments where user_id in (
| |
| select id
| |
| from users
| |
| where is_active = 1
| |
| )
| |
| </syntaxhighlight>
| |
|
| |
| {{WARNING}}
| |
| 대량의 정수 바인딩을 쿼리에 추가하는 경우, <code>whereIntegerInRaw</code> 또는 <code>whereIntegerNotInRaw</code> 메소드를 사용하여 메모리 사용량을 크게 줄일 수 있습니다.
| |
| {{/WARNING}}
| |
|
| |
| ;whereNull / whereNotNull / orWhereNull / orWhereNotNull
| |
| <code>whereNull</code> 메소드는 주어진 컬럼의 값이 NULL인지 확인합니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| $users = DB::table('users')
| |
| ->whereNull('updated_at')
| |
| ->get();
| |
| </syntaxhighlight>
| |
|
| |
| <code>whereNotNull</code> 메소드는 주어진 컬럼의 값이 NULL이 아닌지 확인합니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| $users = DB::table('users')
| |
| ->whereNotNull('updated_at')
| |
| ->get();
| |
| </syntaxhighlight>
| |
|
| |
| ;whereDate / whereMonth / whereDay / whereYear / whereTime
| |
| <code>whereDate</code> 메소드는 컬럼의 값을 특정 날짜와 비교하는 데 사용됩니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| $users = DB::table('users')
| |
| ->whereDate('created_at', '2016-12-31')
| |
| ->get();
| |
| </syntaxhighlight>
| |
|
| |
| <code>whereMonth</code> 메소드는 컬럼의 값을 특정 월과 비교하는 데 사용됩니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| $users = DB::table('users')
| |
| ->whereMonth('created_at', '12')
| |
| ->get();
| |
| </syntaxhighlight>
| |
|
| |
| <code>whereDay</code> 메소드는 컬럼의 값을 특정 일과 비교하는 데 사용됩니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| $users = DB::table('users')
| |
| ->whereDay('created_at', '31')
| |
| ->get();
| |
| </syntaxhighlight>
| |
|
| |
| <code>whereYear</code> 메소드는 컬럼의 값을 특정 연도와 비교하는 데 사용됩니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| $users = DB::table('users')
| |
| ->whereYear('created_at', '2016')
| |
| ->get();
| |
| </syntaxhighlight>
| |
|
| |
| <code>whereTime</code> 메소드는 컬럼의 값을 특정 시간과 비교하는 데 사용됩니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| $users = DB::table('users')
| |
| ->whereTime('created_at', '=', '11:20:45')
| |
| ->get();
| |
| </syntaxhighlight>
| |
|
| |
| ;whereColumn / orWhereColumn
| |
| <code>whereColumn</code> 메소드는 두 컬럼이 같은지 확인하는 데 사용됩니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| $users = DB::table('users')
| |
| ->whereColumn('first_name', 'last_name')
| |
| ->get();
| |
| </syntaxhighlight>
| |
|
| |
| <code>whereColumn</code> 메소드에 비교 연산자를 전달할 수도 있습니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| $users = DB::table('users')
| |
| ->whereColumn('updated_at', '>', 'created_at')
| |
| ->get();
| |
| </syntaxhighlight>
| |
|
| |
| 또한 <code>whereColumn</code> 메소드에 컬럼 비교 배열을 전달할 수도 있습니다. 이러한 조건은 <code>and</code> 연산자로 연결됩니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| $users = DB::table('users')
| |
| ->whereColumn([
| |
| ['first_name', '=', 'last_name'],
| |
| ['updated_at', '>', 'created_at'],
| |
| ])->get();
| |
| </syntaxhighlight>
| |
|
| |
| ===논리적 그룹화=== | | ===논리적 그룹화=== |
| 쿼리의 원하는 논리적 그룹화를 달성하기 위해 여러 "where" 절을 괄호 안에 그룹화해야 할 때가 있습니다. 사실, 예상치 못한 쿼리 동작을 피하기 위해 <code>orWhere</code> 메소드 호출을 항상 괄호 안에 그룹화하는 것이 좋습니다. 이를 달성하기 위해, 클로저를 <code>where</code> 메소드에 전달할 수 있습니다: | | 쿼리의 원하는 논리적 그룹화를 달성하기 위해 여러 "where" 절을 괄호 안에 그룹화해야 할 때가 있습니다. 사실, 예상치 못한 쿼리 동작을 피하기 위해 <code>orWhere</code> 메소드 호출을 항상 괄호 안에 그룹화하는 것이 좋습니다. 이를 달성하기 위해, 클로저를 <code>where</code> 메소드에 전달할 수 있습니다: |