Latest Posts

[Laravel5] Rest API에서 에러발생시 JSON 포맷으로 Response를 보내는 방법

Posted on 2017-03-22 23:34:06

Laravel Rest API에서 에러가 발생했을 때, http response가 json이 아닌 html 포맷으로 넘어오는 문제가 있었다. 클라이언트에서 http request를 보낼 때, http header에 Accept 항목을 "application/json"으로 설정했는데도 불구하고 html 포맷으로 response가 왔다. let headers: HTTPHeaders = [ "Accept": "application/json", ... ]   이 문제를 해결하려고 구글에서 삽질하다가 stack overflow에서 괜찮은 해결책을 발견했다. App\Exceptions\Handler 클래스에서 아래 파란색으로 표시된 코드를 추가해주면 된다.  • app/Exceptions/Handler.php <?php namespace App\Exceptions; ... us...

[Laravel5] log rotation 설정

Posted on 2017-02-26 21:45:15

Laravel은 기본적으로 하나의 파일에 로그를 기록한다. 로그파일은 storage/logs 디렉토리에 있고 파일명은 laravel.log이다. 개발시에는 하나의 파일에 로그를 계속 기록해도 큰 문제는 없겠지만, 실서비스에서는 로그파일이 매우 커져서 디스크 공간이 부족해질 가능성이 있다. 그래서 log rotation을 해 주어야 하는데, Laravel framework는 이 기능을 지원하므로 logrotate와 같은 유틸리티를 사용하지 않아도 된다. config/app.php를 보면 log option이 'single'로 설정되어 있는데, 이 경우 하나의 파일에 로그를 계속 기록한다. log option을 'daily'로 변경하면 매일 log rotation이 된다. 그리고 log option이 'daily'인 경우, Lara...

[Laravel5.4] migration시에 "Specified key was too long" 에러가 발생하는 문제의 해결방법

Posted on 2017-02-18 23:45:28

Laravel5.4에서 migration 실행시에 다음과 같은 에러가 발생하였다. $ php artisan migrateMigration table created successfully.[Illuminate\Database\QueryException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `u sers` add unique `users_email_unique`(`email`)) [PDOException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes   이 문제에 대한 원인과 해결방법을 Laravel 공식문서에서 찾을 수 있었다. https://laravel.com/docs/5.4/migrations#creating-in...

[Laravel5] blade template에서 변수를 선언하는 방법

Posted on 2017-02-17 20:32:52

Laravel 5.2부터 blade template에서 다음과 같은 방법으로 변수를 선언하는 것이 가능해졌다. 1. single statement @php ($count = 0) 2. block statement @php    $count = 0@endphp  

[Laravel5] timestamps(updated_at column)를 touch하지 않고 update하는 방법

Posted on 2017-02-09 16:31:18

블로그 Post가 클릭되면 pageview를 하나 증가시키는데, 이때 timestamps(updated_at 컬럼)도 같이 갱신되는 문제가 있었다.로그를 보면 pageview뿐만 아니라 updated_at 컬럼도 갱신되는 것을 볼 수 있다.  $post = Post::findOrFail($id);$post->increment('pageview'); [2017-02-09 15:49:32] local.INFO: sql => update `posts` set `pageview` = `pageview` + 1, `updated_at` = ? where `id` = ? [2017-02-09 15:49:32] local.INFO: array (0 => '2017-02-09 15:49:32',1 => 2,) [2017-02-09 15:49:32] local.INFO: elapsed time => 0.37   timestamps를 touch하지 않고 update하려면 아래와 같이 timest...

[Laravel5] altisan command 사용법 요약

Posted on 2017-02-02 21:38:55

• php built-in 개발서버 실행 php artisan serve   • laravel version 확인 php artisan --version   • route list 보기 php artisan route:list   • controller, model class 생성 php artisan make:controller PhotoController --resource --model=Photo   • migration 파일 생성 php artisan make:migration create_users_table   • migration 실행 php artisan migrate   • migration rollback php artisan migrate:rollback -> 가장 마지막에 실행한 migration들을 rollbackphp artisan migrate:rollback --step=1-> 가장 마지막에 실행한 mig...

[Laravel5] 실행된 sql query의 로그를 기록하는 방법

Posted on 2017-01-26 20:42:10

방법은 간단하다. 아래와 같이 Service provider에 query listener를 등록하면 된다. • app/Providers/AppServiceProvider.php use Illuminate\Support\Facades\DB;use Illuminate\Support\Facades\Log;class AppServiceProvider extends ServiceProvider{ public function boot() { DB::listen(function ($query) { Log::info("----------------------------------------------------------------"); Log::info('sql => ' . $query->sql); Log::info($query->bindings); Log::info('elapsed time => ' . $query->time); }); } ......}  ...