라라벨 5.8.29 릴리즈 free

2019-07-17

5.8.29가 나왔다. 변화된 내용 중 부를 골 소개한다.


이메 알림에 테마 설정 기능 추가


Mailableview메서드로 뷰를 지정할 수 있다. 이메 알림도 템플릿을 설정하는 기능이 있다. 하지만 이메 알림에 상황별로 다른 템플릿을 적용하는 기능은 없었다. 5.8.29 부터는 다음과 같이 theme 메서드로 이메 알림에 테마를 지정할 수 있다.


public function toMail($notifiable)
{
$url = url('/invoice/'.$this->invoice->id);

return (new MailMessage)
->theme('notification')
->greeting('Hello!')
->line('One of your invoices has been paid!')
->action('View Invoice', $url)
->line('Thank you for using our application!');
}

위와 같이 하면 resources/views/vendor/mail/html/themes/notification.css 테마를 사용하게 된다고 한다.


whereNull과 whereNotNull의 인자로 배열을 넘길 수 있음


기존에는 컬럼을 하나씩만 지정할 수 있었다. 그래서 여러가지 조건을 주려면 여러번 써줘야했다.


$query->whereNull('id')->whereNull('expires_at');
$query->whereNotNull('id')->whereNotNull('expires_at');

5.8.29 부터는 배열로 한 번에 끝낼 수 있다.


$query->whereNull(['id', 'expires_at']);
$query->whereNotNull(['id', 'expires_at']);

Console\Scheduling\ManagesFrequencies::hourlyAt()에 숫자 배열을 넘길 수 있음


작업 스케줄링 설정하는 옵션 중 hourlyAt() 메서드로 매시간 x분에 실행하도록 설정하는 방법이 있다. 하지만 한 번에 값을 하나만 받기 때문에 여러 시점을 한꺼번에 설정할 수 없었다.


hourlyAt()은 체이닝이 불가능해서 아래와 같이 쓰면 마지막 45만 실행된다.


$schedule->command('my:command')->hourlyAt(15)->hourlyAt(30)->hourlyAt(45)

그래서 아래처럼 반복적으로 적어줬어야 했다.


$schedule->command('my:command')->hourlyAt(15);
$schedule->command('my:command')->hourlyAt(30);
$schedule->command('my:command')->hourlyAt(45);

5.8.29는 숫자 배열로 넘겨줄 수 있게되서 다음과 같이 한 줄에 처리할 수 있게 됐다.


$schedule->command('my:command')->hourlyAt([15, 30, 45]);

다형성 관계 즉시 로드(Eager Loading) 성능 개선


내부 성능 개선이 따로 알아두어야 할 건 없다. 다형성 관계 즉시 로드를 성능 때문에 사용하지 않고 있었다면 다시 한 번 검토해보자. 34,000개의 데이터를 조회하는데 1.8초 걸리던게 12밀리초로 단축되었다고 한다.


===


1 1
2019년 7월 17




이현석

바쁜 팀장님 대신 알려주는 신입 PHP 개발자 안내서를 쓰고, 클린 아키텍처 인 PHP를 번역했습니다. 2020년에 출간될 Laravel Up & Running 2nd Edition을 번역하고 있습니다.