演習課題「日記の記事をカテゴリに関連付ける」
右の環境には、「mydiary」アプリケーションディレクトリに、「Category.php」と「Article.php」というモデルを作成してあります。
「Category.php」を「Article.php」に関連付けてください。
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
※ 採点時は、サーバを起動し、問題文に関するページにアクセスできる状態にしてください。
#04:お店とカテゴリのテーブルを関連付けよう
ここでは、先ほど作ったデータベースで、お店とカテゴリのテーブルを関連付けます。さらに、アプリケーションのサンプルデータを投入しましょう。
app/Shop.php<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Shop extends Model
{
    public function category()
    {
        return $this->belongsTo('App\Category');
    }
}
categoriesテーブルINSERT INTO categories(name)
VALUES
    ('イタリアン'),
    ('中華'),
    ('和食');
shopsテーブルINSERT INTO shops(name,address,category_id)
VALUES
    ('パイザ亭', '東京都港区南青山3丁目', 1),
    ('ラーメンLaravel', '東京都港区東青山', 2),
    ('そばの霧島', '東京都港区西青山', 3);
app/Providers/AppServiceProvider.phpclass AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        \URL::forceScheme('https');
    }
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}
Eloquent:利用の開始 5.7 Laravel
https://readouble.com/laravel/5.7/ja/eloquent.html
Eloquent:リレーション 5.7 Laravel
https://readouble.com/laravel/5.7/ja/eloquent-relationships.html
Laravelでの基本的なリレーションシップもしくはJOIN - Qiita
https://qiita.com/zaburo/items/d665804f8ea850502c64
【Laravel入門】リレーションとユーザーの一覧表示 - Qiita
https://qiita.com/33yuki/items/b7186f05d1c266076a35
Laravel5.4で基本的なリレーションを学んでみる | webOpixel
https://www.webopixel.net/php/1261.html
動画ではlaravel5.7を使用していますが、現在はより新しいLaravel5.8が公開されています。
`$ laravel new`で作成したプロジェクトはその時点で最新のLaravelがダウンロードされるため、時期によっては動画と全く同じコードでは無いかもしれませんが2019年3月現在大幅な変更はされていないので大きな影響はありません。
例えば、以下のような違いが見られる場合があります。
### artisan make:modelで作成したマイグレーションファイル
以前はidカラムがincrementsで定義されていましたが、新しくbigIncrementsで定義されるようになります。
これはデータベースのカラムの型に影響しincrements() : 符号なし4byte整数
bigIncrements() : 符号なし8byte整数
となります。
符号なし8byte整数(2\^64通り)は、符号なし4byte整数(2\^32通り)の2\^32倍 = 4,294,967,295倍もの空間を持っています。
bigIncrements()でIDを定義するとincrements()にくらべてこれだけの余裕ができ、より多くのデータを格納できるようになるというわけです。    public function up()
    {
        Schema::create('Shop', function (Blueprint $table) {
            // ここがbigIncrementsになっている
            $table->bigIncrements('id');
            $table->timestamps();
        });
    }
### AppServiceProvider.phpの関数の順番が異なる
AppServiceProvider.phpの関数が動画と違う並び順になっている場合があります。
並び順が異なるだけでメソッドそのものは変わっていませんので、目的のメソッドの位置を確認してください。
paiza cloud向けのHTTPSの設定はboot()メソッドに記述します。class AppServiceProvider extends ServiceProvider
{
    // メソッドの並び順が逆になっている
    public function register()
    {
        //
    }
    public function boot()
    {
        //
    }
}
### 404エラーのデザインが変わっている
404エラーが発生した場合(アクセス先のURLを間違えた場合など)に表示されてるエラーページのデザインがシンプルなものへ変更されました。
paizaラーニングの講座でも存在しないURLへアクセスすれば表示されますので、興味があれば確認してみましょう。
### laravelの更新情報(英語)
- [Release Notes - Laravel](https://laravel.com/docs/5.8/releases)
- [Laravel News](https://laravel-news.com/)