Laravel 10과 AWS SES를 이용하기 위한 설정 가이드1단계: AWS SDK for PHP 설치composer require aws/aws-sdk-php2단계: AWS SES 설정AWS SES를 사용하여 이메일을 보내려면 AWS SES 계정을 설정하고 이메일 주소나 도메인을 인증 필요.참고: 아직 완료하지 않은 경우, '샌드박스' 모드로 발송에 제한이 있음. 보낼 수 있는 메일의 용량과 속도가 크게 제한되며, 모든 수신자가 SES에서 인증을 받아야 함.3단계: Laravel에서 AWS SES 구성Laravel 프로젝트의 config/services.php 수정. AWS SES 인증 정보를 추가// config/services.phpreturn [ // 다른 서비스 구성... 'ses'..
laravel
MySQL DB 에 한글 저장시 깨짐현상이 발생하여 트러블슈팅한 과정을 적어보고자 한다.MySQL Character Set 불일치 문제 해결하기1. 문제 상황# 현상- 한글 데이터 저장 시 깨짐 발생 (예: "안녕하세요" -> "안ë..."")- 저장된 한글 데이터 조회 시 깨짐- 개발 환경에서는 정상 동작하나 운영 환경에서 문제 발생# 증상 확인 방법- 데이터베이스에서 직접 조회했을 때의 데이터 상태- 애플리케이션에서 조회했을 때의 데이터 상태2. 원인 분석-- 1. Character Set 레벨Server > Database > Table > Column 순으로 적용-- 2. Connection 설정 확인SHOW VARIABLES LIKE '%character%';SHOW VARIABLES LIK..
Laravel에서 미들웨어(Middleware)는 애플리케이션의 HTTP 요청 처리 과정에서 핵심적인 역할을 담당한다. 미들웨어는 요청(Request)과 응답(Response) 사이에서 동작하며 다양한 기능을 수행할 수 있다.1. 미들웨어의 기본 구조미들웨어는 handle 메서드를 구현하며, $request와 $next 매개변수를 받음.public function handle($request, Closure $next){ // 요청 전 처리 $response = $next($request); // 응답 후 처리 return $response;}요청 전 처리: $next($request) 호출 이전에 실행되며, 요청이 애플리케이션의 다른 부분에 도달하기 전에 동작.응답 후 처리: $n..
Laravel 로 개발을 하다 보면 Facade, Singleton, Alias 라는 용어를 접할수 있게 되는데 Facade 를 공부하다보면 Alias 는 뭐지 궁금하기도하고 Singleton 을 공부하고나면 Facade 와 무슨 차이인지 궁금해질수도 있다. (Facade 도 하나의 request 생명주기 동안 static 하게 전역적으로 값을 관리할수 있기 때문) 오늘은 각 개념의 의미, 차이점, 그리고 언제 어떻게 사용하는 것이 좋은지 알아보려고 한다. Facade란?Facade는 복잡한 라이브러리의 기능을 간단한 인터페이스로 사용할 수 있게 해주는 디자인 패턴입니다. Laravel에서 Facade는 서비스 컨테이너에 바인딩된 객체에 대한 "정적" 인터페이스를 제공 Facade의 특징서비스 컨테이너..
트랜잭션의 기본 개념트랜잭션은 데이터베이스의 상태를 변경시키는 하나의 논리적 작업 단위. 트랜잭션은 다음과 같은 특징이 있다. (ACID)원자성(Atomicity): 트랜잭션의 모든 연산이 완전히 수행되거나 전혀 수행되지 않아야 함.일관성(Consistency): 트랜잭션 전후로 데이터베이스는 일관된 상태를 유지해야 함.격리성(Isolation): 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 함.지속성(Durability): 성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영되어야 함. Nested TransactionsNested transactions 은 트랜잭션 내에서 또 다른 트랜잭션을 시작하는 개념. 이는 복잡한 작업을 더 작은 단위로 나누어 관리할 수 있게 해준다. 그러나 MySQL..
인증 실패 발생시 클라이언트의 device id 와 액세스 토큰을 로그로 남겨야 할 일이 있어 작업을 하던 도중 액세스 토큰이 보이질 않아 당황. 코드를 좀 살펴보니 passport 에서 Authoization header 를 날려버리길래 궁금해서 살펴보니 이러한 히스토리가 있었다. 누군가가 이걸 왜 날리냐고 이슈에 질문.. https://github.com/laravel/passport/issues/1309 Do not overwrite the authorization header · Issue #1309 · laravel/passport Hi, in the TokenGuard the authorization header will be overwritten when the authentication r..
N - N 관계시 보통 중간에 pivot 테이블을 두어 구현하는데 이때 pivot 테이블에 관계 맵핑뿐만 아니라 추가적으로 컬럼을 추가하여 관리가 가능하다. 그리고 pivot 테이블의 컬럼 값들에 대한 crud 는 다음과 같은 메소드를 자주 활용한다. 문서 참조 attach detach sync syncWithoutDetaching 쿼리빌더 활용 updateOrCreate 와 같은 기능을 사용하고 싶은 경우 쿼리빌더를 반환 받아 활용하도록 하자.
$attributes 는 Model 에서 라라벨의 필드를 담는 배열 변수이다. 보통 $attributes 를 통해 Model 필드에 접근 하는건 Mutator 나 cast 같은 내부 메소드를 통해 접근할때 일것이다. ex) use App\Support\Address; use Illuminate\Database\Eloquent\Casts\Attribute; /** * Interact with the user's address. * * @return \Illuminate\Database\Eloquent\Casts\Attribute */ protected function address(): Attribute { return Attribute::make( get: fn ($value, $attributes) =..