
Laravel 5.5ã®æ°ãããªãªãŒã¹ã¯ãé·æãµããŒãïŒLong Term SupportãLTSïŒã®ãªãªãŒã¹ã«ãªããŸãã ã€ãŸãã圌ã¯2幎éãã°ä¿®æ£ãåãåãã3幎éã»ãã¥ãªãã£ã¢ããããŒããåãåãããšã«ãªããŸãã Laravel 5.1ã®ãªãªãŒã¹ã¯åãã§ããããä»å¹Žã®2幎éã®ç·šéã¯çµããã«è¿ã¥ããŠããŸãã æ°ããããŒãžã§ã³ã§ç§ãã¡ãåŸ
ã£ãŠãããã®ã倧éšãããã«èŠãŠã¿ãŸãããã
Laravel 5.5ã§æ°ãããããžã§ã¯ããäœæãã
æ°ãããªãªãŒã¹ã¯ãŸã æ£åŒã«ãªãªãŒã¹ãããŠããªãã®ã§ã次ã®ã³ãã³ãã䜿çšããŠdevãªãªãŒã¹ãããŠã³ããŒãã§ããŸãã
laravel new laravel55 --dev cd laravel55 php artisan key:generate
Laravelã€ã³ã¹ããŒã©ãŒãæ°ã«å
¥ããªãå Žåã¯ãcomposerã³ãã³ãã䜿çšã§ããŸãã
composer create-project --prefer-dist --stability=dev laravel/laravel:dev-master cd laravel php artisan key:generate
æ°ããã¢ããªã±ãŒã·ã§ã³ã®ããŒã ããŒãžã«ã¢ã¯ã»ã¹ãããšã以åã®ããŒãžã§ã³ã®Laravelã®ãããªãŠã§ã«ã«ã ããŒãžã衚瀺ãããŸãã
ãã©ãŠã¶ã§ã¡ãŒã©ãã«ãã¬ã³ããªã³ã°ãã
ãã®æ©èœã¯éåžžã«åœ¹ç«ã€ãšæããŸãã Laravelã®ä»¥åã®ããŒãžã§ã³ã§ã¯ããã¥ãŒã¹ã¬ã¿ãŒããã¹ãããããã«å®éã®æçŽãéä¿¡ããããMailtrapãªã©ã®é»åã¡ãŒã«ã¯ã©ã€ã¢ã³ãã䜿çšããå¿
èŠããããŸããããã¿ã¹ã¯ã¯æãé¢çœããããŸããã§ããã Laravel 5.5ã§ã¯ããã©ãŠã¶ã§ã¡ãã»ãŒãžãã³ãã¬ãŒããçŽæ¥ã¬ã³ããªã³ã°ã§ããããã«ãªããŸããã
ãããè¡ãç°¡åãªæ¹æ³ã¯æ¬¡ã®ãšããã§ãããããžã§ã¯ãçšã«æ°ããã¡ãŒã«å¯èœãã³ãã¬ãŒããšã¬ã¿ãŒãã³ãã¬ãŒããäœæããŸãã
php artisan make:mail Welcome --markdown=emails.welcome
ãã§ã«ããã€ãã®ã³ã³ãã³ããå«ããã³ãã¬ãŒããååŸããŠãããããããŒã¯ããŠã³åœ¢åŒã䜿çšããããšã奜ã¿ãŸãã web.php
ãã¡ã€ã«ãéããã¬ã¿ãŒãã³ãã¬ãŒãã確èªããããã®ãã¹ãã«ãŒããäœæããŸãã
Route::get('/email', function () { return new App\Mail\Welcome(); });
ã«ãŒã/ web.php
ã«ãŒã/ã¡ãŒã«ã«è¡ããšãã¬ã¿ãŒãã³ãã¬ãŒãã衚瀺ãããŸãã

å®éãæ¬¡ã®ããšãèµ·ãããŸãã Laravel 5.5ã§ã¯ããMailableãã¯ã©ã¹ã¯ãrenderïŒïŒãã¡ãœããã§ãRenderableãã³ã³ãã©ã¯ãã䜿çšããŸãã ãIlluminate / Mail / Mailable.phpãã®renderã¡ãœããã®å®è£
ã¯æ¬¡ã®ãšããã§ãã
public function render() { Container::getInstance()->call([$this, 'build']); return Container::getInstance()->make('mailer')->render( $this->buildView(), $this->buildViewData() ); }
ã€ã«ãããŒã·ã§ã³/ã¡ãŒã«/ Mailable.php
ãã®ã¡ãœããã䜿çšãããšããã¥ãŒãååŸã§ããŸãã ã«ãŒãå
ã§ãRenderableãã³ã³ãã©ã¯ããé©çšããªãã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãè¿ãããšãããšããUnexpectedValueExceptionããçºçããŸãã
Markdownã䜿çšããŠæåããã©ãŒãããããå ŽåãLaravelã¯ããã©ã«ãã®ä»¶åãé
眮ããŸãã ãã ãããã©ã³ãã宣äŒããã«ã¯ç¬èªã®ã¹ã¿ã€ã«ãå¿
èŠã«ãªãå ŽåããããŸãã
ç¹å®ã®éµäŸ¿ç©ã®ã«ã¹ã¿ã ãã¶ã€ã³ãäœæããã«ã¯ããŸããå¿
èŠãªã¹ã¿ã€ã«ã§ã«ã¹ã¿ã '.css'ãã¡ã€ã«ãäœæããŸãã
touch resources/views/vendor/mail/html/themes/custom.css
次ã«ããã®ãã¡ã€ã«ã®ååãMailableã¯ã©ã¹ã®ç¹æ§ãšããŠæå®ããŸãã
class Welcome extends Mailable { protected $theme = 'custom'; [...] }
ã¢ããª/ã¡ãŒã«/ Welcome.php
ãããã£ãŠãã¬ã¿ãŒãã³ãã¬ãŒãã¯ã custom.css
ãã¡ã€ã«ã§æå®ããã¹ã¿ã€ã«ã«åºã¥ããŠããŸãã ç¹ã«åã°ããã®ã¯ãããŸããŸãªã¹ã¿ã€ã«ã®éµäŸ¿ç©ãèšå®ã§ããããšã§ãã
ãã«ããŒäŸå€é¢æ°
Laravel 5.5ã«ã¯ããã衚çŸåè±ããªã³ãŒãã®äœæã«åœ¹ç«ã€2ã€ã®ãã«ããŒäŸå€é¢æ°ãå«ãŸããŠããŸãã ãããã¯throw_if
ããã³throw_unless
ã§ãã ã©ã¡ãã3ã€ã®åŒæ°ãå«ã¿ã3çªç®ã®åŒæ°ã¯ãªãã·ã§ã³ã§ãã
ãããã®äŸå€ãã©ã®ããã«é©çšãããããèŠãŠã¿ãŸãããã
$number = 2; throw_if($number !== 3, new NotThreeException('Number is not three'));
ãã«ããŒé¢æ° 'throw_if'ã䜿çšããå Žåãæåã®åŒæ°ãtrueãšèŠãªããããšäŸå€ãã¹ããŒãããŸãã
throw_unless
ã䜿çšããå Žåãåºæ¬çã«ãã¹ãŠãåãã«ãªããŸãããå¯äžã®éãã¯ãæåã®åŒæ°ãfalseã®å Žåã«äŸå€ãã¹ããŒãããããšã§ãã
$number = 2; throw_unless($number === 3, new NotThreeException('Number is not three'));
è¯ãäŸã§ã¯ãããŸãããããã¢ã³ã¹ãã¬ãŒã·ã§ã³ã«é©ããŠããŸãã
ç§»è¡ïŒæ°ããã³ãã³ã
ãããããããŒã¿ããŒã¹ã埩å
ããªããã°ãªããªãç¶æ³ã«é¥ã£ãŠããŸãã Laravelã®ä»¥åã®ããŒãžã§ã³ã§ã¯ãããã¯php artisan migrate:refresh
ã³ãã³ãã䜿çšããŠå®è¡ã§ããŸããã migrate:refresh
ã³ãã³ãã¯ãåç§»è¡ãã¡ã€ã«ã®ãdownãã¡ãœããã«èšè¿°ãããŠããå
容ã«åºã¥ããŠãã¹ãŠã®ç§»è¡ãããŒã«ããã¯ããç§»è¡ãåéããŸãã

ãã ããç¹ã«å€éšããŒå¶çŽãæäœããå ŽåããŸãã¯ç§»è¡ã®ããããã® 'downïŒïŒ'ã¡ãœãããååã«å®çŸ©ãããŠããªãå Žåããã®ã³ãã³ãã§åé¡ãçºçããããšããããŸãã ãããçºçãããšãã»ãšãã©ã®å Žåãåé¡ã®ããããŒãã«ãæåã§åé€ããŸãïŒããããCLIãŸãã¯GUIã䜿çšããŸãïŒã ãããmigrate:fresh
æmigrate:fresh
ããŒã ãæå©ã«é§ãã€ããŸãã ãã®ã³ãã³ãã¯ããã¹ãŠã®ããŒãã«ãåé€ããŠãããæ¢åã®ç§»è¡ãåã³éå§ããŸãã

æå€§ã®å€æŽã§ã¯ãããŸãããã以åã®ããŒãžã§ã³ã®Laravelã§ã¯ãAPIã§ãšã©ãŒãçºçãããã³ã«Postmanãªã©ã®APIã¯ã©ã€ã¢ã³ãããHTMLããŒã¯ã¢ããã衚瀺ãããŠããŸããã Laravel 5.5ã§ã¯ããšã©ãŒãçºçããå ŽåãHTMLããŒã¯ã¢ããã§ã¯ãªããJSONã®ãã¬ãŒã¹ãååŸããŸããããã¯çè§£ãããããã®ã§ãã

èªåããã±ãŒãžã€ã³ã¹ããŒã«
Laravelãããžã§ã¯ãã§ãµãŒãããŒãã£ããã±ãŒãžã䜿çšããã«ã¯ãæ¬¡ã®æé ãå®è¡ããŸãã
- ããã±ãŒãžãã€ã³ã¹ããŒã«ããŸãã
- ããã±ãŒãžã®ãµãŒãã¹ãããã€ããŒãç»é²ããŸãã
- ãã¡ãµãŒããããå Žåã¯ç»é²ããŸãã
ã芧ã®ãšãããæé ãç°¡ç¥åã§ããŸãã æ¬¡ã®ããã«ãªããŸãã
ããã±ãŒãžã®èªåã€ã³ã¹ããŒã«ã§ã¯ãç®çã®ããã±ãŒãžãéžæããŠãªã³ã¶ãã©ã€ã§é
眮ããã ãã§ãã ãã ããããã¯ããã±ãŒãžãããã€ããŒãé©åã«æ§æããå Žåã«ã®ã¿å¯èœã§ããããšã«æ³šæããŠãã ããã
èªåã€ã³ã¹ããŒã«ããã§ã«æ§æãããŠããLaravel Debugbarããã±ãŒãžãèŠããšã composer.json
ãã¡ã€ã«å
ã«extra
ã»ã¯ã·ã§ã³ãããããšãããããŸãã
"extra": { "laravel": { "providers": [ "Foo\\Bar\\ServiceProvider" ], "aliases": { "Bar": "Foo\\Bar\\Facade" } } }
ããã±ãŒãžãããã€ããŒã¯ã composer.json
ãã¡ã€ã«ã«è¿œå ã®ã»ã¯ã·ã§ã³ã远å ããŠããããµãŒãã¹ãããã€ããŒãšããã±ãŒãžã®ãšã€ãªã¢ã¹ãæå®ããå¿
èŠããããŸãã
ããã±ãŒãžã®èªåã€ã³ã¹ããŒã«ã®ãã1ã€ã®å©ç¹ã¯ãäŸåé¢ä¿ãåé€ããŠãäœãå£ããªãããšã§ãã éåžžãããã±ãŒãžãåãå£ãããåŸã§ãããã®ãµãŒãã¹ãããã€ããŒãšãã¡ãµãŒãã¯config/app.php
ã«æ®ã£ãŠãããå Žåã«ãã£ãŠã¯ãšã©ãŒãçºçããå¯èœæ§ããããŸãã
èªåã€ã³ã¹ããŒã«ã§ã¯ãComposerã䜿çšããŠããã±ãŒãžãåé€ãããšããã®ããã±ãŒãžã«é¢é£ãããã¹ãŠã®ãã®ãåé€ãããŸãã
ãã³ããŒãžã®å€æŽïŒçºè¡ã³ãã³ã
Laravelã®ä»¥åã®ããŒãžã§ã³ã§ã¯ã vendor:publish
ã³ãã³ãã¯ãã¹ãŠã®ããã±ãŒãžã®ãªãœãŒã¹ãšãã¬ãŒã ã¯ãŒã¯èªäœãå
¬éããŠããŸããã ãããã®ãªãœãŒã¹ã«ã¯ãç§»è¡ããã¥ãŒãæ§æãå«ãŸããŸãã
Laravel 5.5ã§ã¯ããã®ã³ãã³ãã§æ£ç¢ºã«å
¬éãããã®ãè©³çŽ°ã«æç¢ºã«ããå¿
èŠããããŸãã ãã©ã°ãªãã§php artisan vendor:publish
ã³ãã³ããå®è¡ããå Žåãå¿
èŠãªãã®ã ããå
¬éããããããããã«ãããã€ããŒãŸãã¯ã¿ã°ãéžæããå¿
èŠããããŸãã 以äžã®ã¹ã¯ãªãŒã³ã·ã§ãããã芧ãã ããã

publish
ã³ãã³ãã®å®è¡æã«--all
ãŸãã¯--provider
ãã®æé ãåé¿ã§ããŸãã
php artisan vendor:publish --all
ããŸããŸãªããã³ããšã³ãããªã»ãã
Laravel 5.3ããã³5.4ã§ã¯ãããã©ã«ãã§ããã€ãã®Vueããã³Bootstrapããªã»ããããããããã³ããšã³ãéçºãç°¡çŽ åããŸããã æ°ããããŒãžã§ã³ã§ã¯ãReactããã®ãããã«è¿œå ãããŸããã ãããã圌ã¯ããã©ã«ãã§ã¯ããã«ç«ã£ãŠããŸããã
æ°ããè·äººããŒã ã¯ãããã³ããšã³ãããªã»ããã®ç®¡çãæ¯æŽããŸãã äœæ¥ãããããªã»ããã«å¿
èŠãªã¯ãŒã¯ããŒã¹ã®ã¿ããããŸãã ããããããã©ã«ãã®ããªã»ããã§ããVueãBootstrapãReactã«èª°ããæºè¶³ããŠããããã§ã¯ãªãã誰ãä»ã®ãã®ãå¿
èŠã«ãªãå ŽåããããŸãã ããããå¥ã®ããã³ããšã³ããã¬ãŒã ã¯ãŒã¯ã ãããŠãLaravelã¯ãã§ã«ãããåŠçããŠããŸããã
php artisan preset none
ãã®ã³ãã³ãã¯ãæ¢åã®ãã¹ãŠã®ããã³ããšã³ããã©ã³ã¯ãåé€ããŸãã Reactã䜿çšãããå Žåã¯ã次ã®ã³ãã³ããæºåã«åœ¹ç«ã¡ãŸãã
php artisan preset react
以äžã¯ããã®æ°ããããŒã ã®æŽ»åã§ãã

ãã£ãšæ»ã£ãŠããïŒ
ãã£ãšãLaravel 5.5ã«æ»ã£ãŠããŸããïŒ ãšã©ãŒã衚瀺ããæ°ããæ¹æ³ã çŸåšãéçºäžã«ãšã©ãŒãçºçããå Žåããã®ã³ãŒãè¡ããšã©ãŒã¡ãã»ãŒãžãšãšãã«ã¹ã¯ãªãŒã³ã·ã§ãããšããŠèŠãããšãã§ããŸãã ç§ã®æèŠã§ã¯ããšã©ãŒã¡ãã»ãŒãžã¯èŠæ ããè¯ããªãã誀ã£ãã³ãŒãè¡ãå«ãã¹ã¯ãªãŒã³ã·ã§ããã衚瀺ãããããã«ãªã£ãããšã§ããšã©ãŒãä¿®æ£ãããããªããŸããã
Whoopsã®ãšã©ãŒäŸïŒ

ãã1ã€ã®ã¯ãŒã«ãªããªãã¯ã¯ãWhoopsã䜿çšãããšãæå®ãããã¡ã€ã«ãIDEãŸãã¯ãšãã£ã¿ãŒã§çŽæ¥éãããšãã§ããããã«ãªãããšã§ãã ãã®é¢æ°ã¯ããšãã£ã¿ãŒãã€ã³ã¹ããŒã«ãããŠãããã·ã³äžã®PHPãã¡ã€ã«ã«ããŒã«ã«ã¢ã¯ã»ã¹ã§ããå Žåã«ã®ã¿æ©èœããŸãã èšå®ããã«ã¯ãapp / Exceptions / Handler.phpãéããæ¬¡ã®ã¹ããããã远å ããŸãã
[...] use Illuminate\Filesystem\Filesystem; use Illuminate\Support\Arr; use Whoops\Handler\PrettyPageHandler; [...] class Handler extends ExceptionHandler { [...] protected function whoopsHandler() { return tap(new PrettyPageHandler, function ($handler) { $files = new Filesystem; $handler->setEditor('sublime'); $handler->handleUnconditionally(true); $handler->setApplicationPaths( array_flip(Arr::except( array_flip($files->directories(base_path())), [base_path('vendor')] )) ); }); } }
app \ Exceptions \ Handler.php
ãã®ã¹ããããã¯ãã©ã€ã³$handler->setEditor('sublime')
ã䜿çšããŠã¡ã€ã³ã¯ã©ã¹ã®whoopsHandler()
ã¡ãœããããã£ã³ã»ã«ããSublime Textã§ãªã³ã¯ãéããŸãã å¥ã®ãšãã£ã¿ãŒã䜿çšããŠããå Žåã¯ãgithubã®èšäºã§ãµããŒããããŠãããã¹ãŠã®ãšãã£ã¿ãŒã®ãªã¹ããšç¬èªã®ãšãã£ã¿ãŒã®è¿œå æ¹æ³ã確èªããŠãã ããã Macã䜿çšããŠããå Žåã¯ããããæ©èœãããããã«åŽé«ãªURLãããã³ã«ãããŠã³ããŒãããŠãã ããã
ã«ã¹ã¿ã äŸå€ã®å ±åæ¹æ³
以åã®ããŒãžã§ã³ã§ã¯ãç¹å¥ãªæ¹æ³ã§ã«ã¹ã¿ã äŸå€ãæ§æããå ŽåãHandler.phpãã¡ã€ã«ã®ã¬ããŒãã¡ãœããå
ã«ããããé
眮ããå¿
èŠããããŸããã ããšãã°ã次ã®ããã«ïŒ
[...] public function report(Exception $exception) { if ($exception instanceof CustomException) {
ã¢ããª/äŸå€/ Handler.php
ããšãã°ã50ã®äž»èŠãªäŸå€ãããå Žåããã®ãã¡ã€ã«ã¯ã²ã©ããã®ã«å€ãããŸãã Laravel 5.5ã§ã¯ãã«ã¹ã¿ã äŸå€ã®å Žåã«äœãèµ·ãããã瀺ãããã«ãäŸå€å
ã«report()
ã¡ãœãããäœæã§ããŸãã
[...] class CustomException extends \Exception { public function report() {
ã¢ããª/äŸå€/ CustomException.php
ã¢ãã«ãã¡ã¯ããªãŒãžã§ãã¬ãŒã¿ãŒ
Laravel 5.5ã¯ãã¢ãã«ãã¡ã¯ããªãäœæããæ°ããããŒã ãå°å
¥ããŸããã ã¢ãã«ãã¡ã¯ããªã¯ããã¹ãçšã®åœããŒã¿ãŸãã¯æ°ãããªããžã§ã¯ããçæããå¿
èŠãããå Žåã«éåžžã«äŸ¿å©ã§ãã
ç¹å®ã®ã¯ã©ã¹ã®ãã¡ã¯ããªãŒãäœæããã«ã¯ã次ã®ã³ãã³ããå®è¡ããŸãïŒ
php artisan make:factory Post
ããŒã¿ããŒã¹/ãã¡ã¯ããªãéããšãPostFactoryã¯ã©ã¹ã衚瀺ãããŸãã
[...] $factory->define(App\Post::class, function (Faker $faker) { return [
ããŒã¿ããŒã¹/å·¥å Ž/ PostFactory.php
ç§ãã¡ã¯è²¬ä»»ãå
±æããŠãããããããã¯ãããšã¬ã¬ã³ããªã¢ãããŒãã ãšæããŸãã Laravelã®ä»¥åã®ããŒãžã§ã³ã§ã¯ããã¹ãŠã®å·¥å Žã¯åãapp/factories/ModelFactory.php
ã
æ€èšŒæžã¿ããŒã¿ãè¿ã
ããã§ãããªããŒã¿ãŒããããŒã¿ãååŸããŠcreate
ã¡ãœããã«æž¡ãããšãcreate
ã Laravelã®ä»¥åã®ããŒãžã§ã³ã§ã¯ã次ã®ãããªæ°ãããªããžã§ã¯ããäœæããŸããã
{ $this->validate(request(), [ 'title' => 'required', 'body' => 'required' ]);
Laravel 5.5ã§ã¯ãæ€èšŒæžã¿ã®ããŒã¿ãããªããžã§ã¯ããçŽæ¥äœæã§ããããã«ãªããŸããã
public function store() { $post = $this->validate(request(), [ 'title' => 'required', 'body' => 'required' ]); return Post::create($post); }
ãªã¯ãšã¹ãããçŽæ¥validate
ã³ãã³ããåŒã³åºãããšãã§ããŸãïŒ
public function store() { $post = request()->validate([ 'title' => 'required', 'body' => 'required' ]); return Post::create($post); }
ãã ãããã®æ¹æ³ã§ãªããžã§ã¯ããäœæãããšãã¯æ³šæãå¿
èŠã§ããããšã«æ³šæããŠãã ãããæ€èšŒã¡ãœããã®å€ã«æ®ã屿§ã¯éèŠã§ã¯ãªãããã§ãã ãã®åé¡ã«å¯ŸåŠããããã«ãå€ãæ€èšŒãå¿
èŠãšããªãå Žåã§ãããã®ãªããžã§ã¯ãã®æ€èšŒã¡ãœããå
ã§äœæãããã¹ãŠã®å±æ§ãæž¡ããŸãã
$post = request()->validate([ 'title' => 'required', 'body' => 'required', 'notRequiredField' => '', ]); return Post::create($post);
ãããã£ãŠããã®ãã£ãŒã«ãã¯èš±å¯ãããèŠæ±ããŒã¿ã«èªåçã«è¿œå ãããŸãããæ€èšŒèŠåã«éå®ãããŸããã
ã«ã¹ã¿ã æ€èšŒã«ãŒã«
Laravelã®ä»¥åã®ããŒãžã§ã³ã§ã¯ã Validator::extend
ã¡ãœããã䜿çšããŠèšå®ã§ããŸããã ããããäžå€®éæš©åã¯ãããŸããã§ããã AppServiceProvider
ãã¡ã€ã«ã«ã«ãŒã«ã远å ãinside the resources/lang/en/validation.php
ãã¡ã€ã«inside the resources/lang/en/validation.php
ã¡ãã»ãŒãžã远å ããŸããã Laravelã®ããã¥ã¡ã³ãã§ã¯ããããããŒãžã§ã³5.4ã§ã©ã®ããã«è¡ããããã«ã€ããŠè©³ãã説æããŠããŸãã
Laravel 5.5ã«ã¯ãã«ã¹ã¿ã æ€èšŒãå®çŸ©ããæ°ããè·äººããŒã ããããŸãã ãã®ã³ãã³ãã¯ã Rule
ã³ã³ãã©ã¯ããå®è£
ããæ°ããã¯ã©ã¹ãäœæããŸãã æ°ããã«ãŒã«ãäœæããŠãäžèº«ã確èªããŸãããã
php artisan make:rule CustomRule
app/Rules/CustomRule.php
ãèŠããšã app/Rules/CustomRule.php
ã¡ãœãããšmessage
ã¡ãœããã®2ã€ã®ã¡ãœããpasses
ããmessage
ã passes
ã¡ãœããã¯2ã€ã®ãã©ã¡ãŒã¿ãŒãåããŸãã attribute
ãšvalue
ãããŒã«value
ãè¿ããŸãã æ··ä¹±ããŠããå Žåã $attribute
ã¯æ€èšŒããããã£ãŒã«ãã§ããã $value
ã¯å±æ§ã«æž¡ãããå®éã®å€ã§ãã
ããšãã°ããŠãŒã¶ãŒã«ç¹å®ã®ååãä»ããããªããšããŸãã æ¬¡ã«ãã«ãŒã«ã¯æ¬¡ã®ããã«ãªããŸãã
{ [...] public function passes($attribute, $value) { return $value !== 'unwantedname'; } public function message() { return 'You cannot use that as your username'; } [...] }
ã¢ããª/ã«ãŒã«/ CustomRule.php
次ã«ãæ°ããã«ãŒã«ã䜿çšããŠusername
屿§ãæ€èšŒããŸãã
use App\Rules\CustomRule; request()->validate([ 'username' => [ 'required', new CustomRule() ], 'anotherfield' => 'required|min:5' ]);
ã¢ããª/ã«ãŒã«/ CustomRule.php
Laravelã®æ°ããããŒãžã§ã³ã§ã«ã¹ã¿ã æ€èšŒãã©ã®ããã«å®çŸ©ããããã¯ã Taylor Otwellã®èšäºã§è©³ãã説æãããŠããŸã ã
ã³ã¬ã¯ã·ã§ã³ã«DDãšDumpã远å ããŸãã
ããã§ãdumpïŒïŒããã³ddïŒïŒã¡ãœãããã³ã¬ã¯ã·ã§ã³ã«å«ãŸããŸããã Laravelã®ä»¥åã®ããŒãžã§ã³ã§ã¯ãã³ã¬ã¯ã·ã§ã³ããããã°ãããšãã«ã³ã¬ã¯ã·ã§ã³å€æ°ãå²ãåœãŠãã³ã¬ã¯ã·ã§ã³ã倿Žããããšããããã³ãããŸããã Laravel 5.5ã§ã¯ãã³ã¬ã¯ã·ã§ã³ããçŽæ¥dd()
ãŸãã¯dump()
ã³ãã³ããåŒã³åºããããã«ãªã£ãããããããè¡ãå¿
èŠããªããªããŸãããããã«ããããããã°ãã¯ããã«ç°¡åã«ãªããŸãã
倿°ã®å€æŽãè¡ãããæçš¿ã®ã³ã¬ã¯ã·ã§ã³ãããããã¹ãŠã®ã¹ãããã§ã³ã¬ã¯ã·ã§ã³ãæ€æ»ããå¿
èŠããããšããŸãã æ¬¡ã«ã以äžãå®è¡ããŸãã
$posts = Post::all(); $posts ->dump() ->sorBy('title') ->dump() ->pluck('title') ->dump();
åºåã¯æ¬¡ã®ãšããã§ãã
Collection {#284 ⌠#items: array:3 [⌠0 => Post {#285 } 1 => Post {#286 } 2 => Post {#287 } ] } Collection {#272 ⌠#items: array:3 [⌠0 => Post {#285 } 2 => Post {#287 } 1 => Post {#286 } ] } Collection {#268 ⌠#items: array:3 [⌠0 => "Aida Bosco" 1 => "Madge Leuschke" 2 => "Miss Bulah Armstrong Jr." ] }
ããã«ãããåã¹ãããã§ã³ã¬ã¯ã·ã§ã³ã®å
容ãç°¡åã«æ€æ»ã§ããŸãã ãããã dump()
ãšdd()
ã«ã¯éããããããšã«æ³šæããŠãã ããã dump()
ã¯ãã°ããã®éçµæãè¿ãããã®åŸåäœãç¶ããŸããäžæ¹ã dd()
ã¯ããã»ã¹ãå³åº§ã«åæ¢ããŠçµæããã³ãããŸãïŒddã¯ãã³ããšãã€ããªã»ãããšãã€ãæå³ããŸãïŒã ãã¹ãŠã®ã¹ãããã§ã³ã¬ã¯ã·ã§ã³ããdd()
ãåŒã³åºããå Žåãã³ã¬ã¯ã·ã§ã³ããdd()
ãåŒã³åºããæåã®æç¹ã§ã®ã¿çµæãååŸããŸãã èŠãŠã¿ãŸãããïŒ
366666
$posts = Post::all(); $posts ->dump() ->sorBy('title') ->dd() ->pluck('title') ->dump();
åºåã§ã¯ãå¥ã®ãã®ãååŸããŸãã
Collection {#284 ⌠#items: array:3 [⌠0 => Post {#285 } 1 => Post {#286 } 2 => Post {#287 } ] } array:3 [⌠0 => Post {#285 } 2 => Post {#287 } 1 => Post {#286 } ]
å€å¯Ÿå€ã®äžéããŒãã«ã®ã«ãŒã¹ã
éåžžãModelã®castsããããã£ã宣èšããããšãã§ããŸããããã«ããã屿§ã®æ ŒçŽæ¹æ³ãšèªã¿åãæ¹æ³ã決ãŸããŸãã Postã¢ãã«ããããèªã¿åãããã³æžãèŸŒã¿æã«ãã£ãŒã«ãã®1ã€ãJSONã§ã·ãªã¢ã«åãããšããŸãã æ¬¡ã®ã³ãŒãã¹ãããããããã«åœ¹ç«ã¡ãŸãã
class Post extends Model { [...] protected $casts = [ 'somefield' => 'array', ]; [...] }
ããŒãžã§ã³5.4ã§ã¯ãæ¢ã«ã«ã¹ã¿ã ãããããå€å¯Ÿå€ã®é¢ä¿ã«ãã£ã¹ãã§ããŸããããããŒã¿ã®èªã¿åãããã§ããŸããã§ããã ããŒã¿ã®æžãèŸŒã¿æäœãå®è¡ããå Žåã¯ãæåã«å±æ§å€ãæåã§ãã£ã¹ãããŠããä¿åããå¿
èŠããããŸãã Eloquent\Model
ã¯ã©ã¹ãšEloquent\Relations\Pivot
ã¯ã©ã¹ã®casts
ããããã£ã¯åãããã«åäœããããããããè¡ãå¿
èŠã¯ãããŸãããããã«ãããããããã¢ãã«ã§attach
ã sync
ãããã³save
ã¡ãœããã䜿çšã§ããŸãã
ã«ã¹ã¿ã ãã¬ãŒã:: ifïŒïŒãã£ã¬ã¯ãã£ã
ãã¬ãŒããã³ãã¬ãŒãã§é·ãç¹°ãè¿ããã§ãã¯ã³ãŒãã䜿çšãããšãèŠèŠãããªããŸãã è¯ããã¥ãŒã¹ã¯ããã³ãã¬ãŒãããéè€ããæ€èšŒã³ãŒããæœåºã§ããããã«ãªã£ãããšã§ããããã«ããããã³ãã¬ãŒããããã¯ãªãŒã³ã§èªã¿ããããªããŸãã æ¬¡ã®ãããªãã§ãã¯ïŒ
@if (auth()->check() && auth()->user()->isSubscribed()) <p>Subscribed</p> @else <p>Not Subscribed</p> @endif
次ã®ãã®ã«çœ®ãæããããšãã§ããŸãã
@subscribed <p>Subscribed</p> @else <p>Not Subscribed</p> @endsubscribed
ã«ã¹ã¿ã ãã¬ãŒããã£ã¬ã¯ãã£ããäœæããããã®ããžãã¯ã¯ã AppServiceProvider
ã¯ã©ã¹ã®boot
ã¡ãœããã«è¿œå ããboot
ã
[...] use Illuminate\Support\Facades\Blade; class AppServiceProvider extends ServiceProvider { [...] public function boot() { Blade::if('subscribed', function () { return auth()->check() && auth()->user()->isSubscribed(); }); } [...] }
app / Providers / AppServiceProvider.php
äžéšã®ãã§ãã¯ã§ã¯ãåŒæ°ã«ã¡ãœãããæž¡ãå¿
èŠãããå ŽåããããŸãã ãã®å Žåãã«ã¹ã¿ã ãã¬ãŒããã£ã¬ã¯ãã£ãã«é¢ããŠã¯ãã¯ããŒãžã£ãŒã«åŒæ°ãæž¡ããŸãã
@if (auth()->check() && auth()->user()->isFollowing($user->id))
ãã®æ¡ä»¶ãäŸãšããŠäœ¿çšããå Žåã $user->id
ãisFollowing()
ã¡ãœããã«æž¡ãå¿
èŠãããããšãisFollowing()
ãŸãã åŒæ°ãšããŠ$user->id
ã䜿çšããã«ã¹ã¿ã ãã¬ãŒããã£ã¬ã¯ãã£ããäœæããã«ã¯ãæ¬¡ã®æé ãå®è¡ããŸãã
Blade::if('following', function (User $user) { return auth()->check() && auth()->user()->isFollowing($user->id) });
次ã«ããã³ãã¬ãŒãã§ãã®æ°ãããã£ã¬ã¯ãã£ãã䜿çšããã«ã¯ïŒ
@following($user) <p>Following</p> @else <p>Not Following</p> @endfollowing
ã«ãŒãã«å
ã®æ°ããè·äººããŒã ã®èªåç»é²
éåžžã php artisan make:command command-name
ã䜿çšããŠæ°ããè·äººã³ãã³ããäœæããŸãã ãã®åŸãã³ãã³ãã§ã¯ã©ã¹å
ã«ããŒãå²ãåœãŠãã«ãŒãã«ã«ç§»åããŠã³ãã³ããæåã§ç»é²ããŸãã
ã«ãŒãã«ã§æ°ããããŒã ãç»é²ããå¿
èŠã¯ãªããªããŸããã app/Console/kernel.php
ãã¡ã€ã«å
ã«ã³ãã³ããã£ã¬ã¯ããªã远跡ãããã¹ãŠã®ãã¡ã€ã«ãã¹ãåå空éãã¹ã«å€æããæ°ããã¡ãœããã远å ãããŸããã
[...] protected function commands() { $this->load(__DIR__.'Commands'); require base_path('routes/console.php'); } [...]
ã«ãŒãã«ã«ãŸã ç»é²ãããŠããªãã³ãã³ããåŒã³åºãããšããŸãã commandsïŒïŒã¡ãœããã¯èªåçã«æ¥ç¶ããŸãã
æ°ããã«ãŒãæ¹æ³
ããã¯æãã¯ãŒã«ãªæ°æ©èœã§ã¯ãããŸãããã2ã€ã®è¿œå ã®ã«ãŒãã¡ãœãããããããšã«æ³šæããŠãã ããã
Route::view('/welcome', 'welcome'); Route::redirect('home', 'dashboard');
1ã€ç®ã¯ããŠã§ã«ã«ã ãã¥ãŒã/ Welcomeãã¹ã«ãã€ã³ããã2ã€ç®ã¯/home
ãªã¯ãšã¹ãã/dashboard
ãªãã€ã¬ã¯ãããŸãã
Laravel Horizoâânã®ç޹ä»
ããã¯ãLaravel Redisãã¥ãŒã®ããã·ã¥ããŒããšã³ãŒãé§åã®æ§æã·ã¹ãã ãæäŸããæ°ããLaravelããã±ãŒãžã§ãã

Horizoâânã¯ããªã¢ã«ã¿ã€ã ã®ãã¥ãŒã®èªã¿èŸŒã¿ãæè¿ã®ã¿ã¹ã¯ã倱æããã¿ã¹ã¯ãã¿ã¹ã¯ã®åèµ·åã®è©Šè¡ãã¹ã«ãŒããããšã©ã³ã¿ã€ã ã®ã¡ããªãã¯ãããã³ããã»ã¹ã®æ°ã衚瀺ããŸãã
Horizoâânã®æ©èœã«ã¯æ¬¡ã®ãã®ããããŸãã
- ã¿ã¹ã¯ã®é«ã¬ãã«åæ-1åãããã®ã¿ã¹ã¯æ°ãéå»1æéã®ã¿ã¹ã¯ãªã©ã®ææš
- ç¹å®ã®ã¿ã¹ã¯ããã³ãã¥ãŒã«åºæã®åæã
- ã¿ã°ãšç£èŠ-ç¹å®ã®ã¿ã°ãç£èŠããã ãã§ãªããã¿ã¹ã¯ã«ã¿ã°ã远å ã§ããŸãã
- æè¿ã®ã¿ã¹ã¯-ææ°ã®ã¿ã¹ã¯ã«é¢ããæ
å ±ãååŸã§ããŸãã
- ãã¥ãŒãã©ã³ã·ã³ã°æŠç¥-Horizoâânã¯ãè² è·ã«å¿ããŠãã¹ãŠã®ãã¥ãŒã«ãã¥ãŒã¯ãŒã«ãŒããã»ã¹ãèªåçã«åæ£ã§ããŸãã
Taylor Otwell ã¯åœŒã®èšäºã§ã Horizoâânãšããã«å«ãŸãããã¹ãŠã®æ©èœãæ§æããæ¹æ³ã«ã€ããŠè©³ãã説æããŠããŸãã
æ°ããããŒã¿ããŒã¹ç§»è¡ç¹æ§
ããã¯RefreshDatabase RefreshDatabase
ã§ãã ãªããããå¿
èŠãªã®ãçåã«æã人ããããããããŸãããããã®èåŸã«ããçç±ã¯çã«ããªã£ãŠããŸãã åœåã DatabaseMigrations
ããã³DatabaseTransactions
ç¹æ§ããããŸããã
ãã¹ãã§DatabaseMigrations
ç¹æ§ã䜿çšãããšãåãã¹ãã®ååŸã«ç§»è¡ãå®è¡ããã DatabaseTransactions
ç¹æ§ã«ãããåãã¹ãåŸã«ããŒã¿ããŒã¹ãå
ã®ç¶æ
ã«åŸ©å
ãããããšãä¿èšŒãããŸãã
RefreshDatabase RefreshDatabase
ã¯ãããã2ã€ã®æ©èœãçµã¿åãããŠããŸãã ããŒã¿ããŒã¹ã¯ãã¹ãã®éå§æã«1åç§»è¡ãããã®åŸãåãã¹ãããã©ã³ã¶ã¯ã·ã§ã³ã§ã©ããããŸãã å©ç¹ã¯ããã¹ãããšã«ããŒã¿ããŒã¹ãåç§»è¡ããå¿
èŠããªãããšã§ããã€ãŸãããã¹ããããéãåæ ŒããŸãã
ãããã«
ã芧ã®ãšãããæ°ããããŒãžã§ã³ã«ã¯å€ãã®ã¯ãŒã«ãªæ°æ©èœããããŸãã , , , .
Laravel!