백엔드/laravel
-
Query Builder 풀 텍스트 인덱스백엔드/laravel 2024. 1. 15. 17:27
풀 텍스트 인덱스를 사용하려면 먼저 해당 열에 풀 텍스트 인덱스를 설정해야 합니다. 이를 위해 마이그레이션 파일을 수정하고 fullText 메소드를 사용하여 풀 텍스트 인덱스를 추가합니다. 1. 마이그레이션 수정: description 열에 대한 풀 텍스트 인덱스를 사용하도록 마이그레이션을 수정합니다. php artisan make:migration set_description_to_text_on_posts_table --table=posts 엔터 2024_01_15_set_description_to_text_on_posts_table.php ------------------------------------------------------------------------------ Schema::tabl..
-
Query Builder orderBy, latest, 그리고 oldest 메소드백엔드/laravel 2024. 1. 15. 16:28
1. orderBy 메소드 orderBy 메소드를 사용하면 특정 열을 기준으로 쿼리 결과를 오름차순 또는 내림차순으로 정렬할 수 있습니다. 두 번째 인수를 제공하지 않으면 기본적으로 오름차순으로 정렬됩니다. $results = DB::table('posts')->orderBy('title')->get(); 내림차순으로 정렬하려면 두 번째 인수를 추가할 수 있습니다. $results = DB::table('posts')->orderBy('title', 'desc')->get(); 또한 여러 orderBy 메소드를 연결하여 여러 열로 정렬할 수 있습니다. $results = DB::table('posts')->orderBy('title')->orderBy('minutes_to_read')->get(); 2...
-
Query Builder 직접 쿼리를 작성백엔드/laravel 2024. 1. 15. 16:10
먼저 selectRaw 메소드를 살펴봅시다. 이 메소드는 컬럼 대신 원시 표현식을 선택할 수 있게 해줍니다. 예를 들어, 모든 레코드의 개수를 post_count라는 별칭으로 선택하고자 한다면 다음과 같이 사용할 수 있습니다: $results = DB::table('posts')->selectRaw('count(*) as post_count')->get(); 이것은 select count(*) as post_count from posts와 동일한 결과를 반환합니다. 다음으로 whereRaw 메소드를 사용하여 쿼리에 원시 WHERE 절을 추가할 수 있습니다. 예를 들어, created_at 열이 현재 시간보다 1일 이상 뒤인 포스트를 선택하고자 한다면 다음과 같이 사용할 수 있습니다: $results = ..
-
query builder big data set 작업시 지연 로드 lazy 와 lazyById 메서드백엔드/laravel 2024. 1. 14. 19:49
lazy 메서드와 lazyById 메서드는 Laravel의 쿼리 빌더에서 대량의 데이터를 처리할 때 메모리 부족 문제를 방지하기 위한 방법으로 사용됩니다. lazy 메서드: lazy 메서드는 대량의 레코드를 메모리에 한꺼번에 로드하지 않고 필요한 시점에 청크 단위로 데이터를 검색하는 데 사용됩니다. lazy 메서드는 LazyCollection 인스턴스를 반환하며, 반복되는 동안 작은 청크 단위로 결과를 가져옵니다. 기본적으로 청크 크기는 1000입니다. each 메서드를 사용하여 데이터를 처리할 때 메모리 부족 문제를 방지할 수 있습니다. $posts = DB::table('posts')->orderBy('id')->lazy(); $posts->each(function ($post) { echo $pos..
-
query builder big data set 분할 처리하는 chunk 메서드백엔드/laravel 2024. 1. 14. 18:48
만약 전체 데이터가 1000개이고, 한 번에 100개씩 처리하도록 설정했다면, 해당 콜백 함수는 총 10번 호출됩니다. 각 호출 시에는 100개의 데이터가 해당 청크에 전달되어 처리됩니다. 이것이 대량의 데이터를 작은 청크로 나눠서 효율적으로 처리하는 방식입니다. $chunkSize = 100;DB::table('posts') ->orderBy('id') ->chunk($chunkSize, function ($posts) { foreach ($posts as $post) { echo $post->title . ''; } });
-
query builder Pessimistic Locking백엔드/laravel 2024. 1. 14. 18:21
pessimistic locking 방식은 여러 사용자가 동시에 동일한 자원에 접근 및 수정할 때 충돌을 방지하기 위한 중요한 기능입니다. 데이터의 일관성과 정확성을 보장하며 다중 사용자가 액세스할 때도 안전하게 작동합니다. 1. lockForUpdate 메서드 DB::transaction(function () { // 사용자 1의 잔액을 감소시키는 쿼리 DB::table('users')->where('id', 1)->lockForUpdate()->decrement('balance', 20); // 사용자 2의 잔액을 증가시키는 쿼리 DB::table('users')->where('id', 2)->lockForUpdate()->increment('balance', 20); }); 2. sharedLock..
-
query builder transaction백엔드/laravel 2024. 1. 14. 18:12
use Illuminate\Support\Facades\DB; public function index() { // Laravel에서 제공하는 DB::transaction을 사용하여 데이터베이스 트랜잭션을 시작합니다. DB::transaction(function () { // 사용자 1의 잔액을 감소시키는 쿼리 DB::table('users')->where('id', 1)->decrement('balance', 20); // 사용자 2의 잔액을 증가시키는 쿼리 DB::table('users')->where('id', 2)->increment('balance', 20); }); // 데이터베이스 트랜잭션이 성공하면 커밋이 자동으로 이루어집니다. // 실패하면 롤백됩니다. }
-
Query Builder 에서 제공하는 dd 및 dump백엔드/laravel 2024. 1. 14. 14:56
1. dd 메서드 - Dump and Die: $post = DB::table('posts')->where('id', 1)->get(); dd($post); 2. dump 메서드: $post = DB::table('posts')->where('id', 1)->get(); dump($post); 3. Query Builder에 dd 또는 dump 메서드 사용: $post = DB::table('posts')->where('id', 1)->get()->dd(); // or $post = DB::table('posts')->where('id', 1)->get()-> dump ();