じろう

2019年11月02日に参加

学習履歴詳細

[Laravel]リレーションのコード追う、課題アプリ作成を進める(ユーザー登録・ログイン)

今日のYWT

やったこと

Laravel

リレーションのコードを追う

  • 画像の複数アップロードで使われてたコードを元にメンターさんにどういう意味なのかを聞く
  • それを聞いた上で、仮説を立て、Techpit教材で使われていたuse Illuminate\Database\Eloquent\Relations\BelongsTo;の謎を解く

Travelog

  • 記事一覧機能実装
  • ユーザー登録機能実装
  • ログイン・ログアウト機能実装
  • GitHubでイシューテンプレート作成

わかったこと

Laravelのリレーション

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class Article extends Model
{
    public function user(): BelongsTo
    {
        return $this->belongsTo('App\User');
    }
}

user();メソッド内のreturn $this->belongsTo('App\User');が、リレーションを実現している
Railsでいう以下のコードと「ほぼ」同じ?

class Article < ApplicationRecord
    belongs_to :user
end

違うところは、user()は関連付けるための設定を記載したメソッドで、呼び出せば関連付けられたEloquentを呼び出せる
また、use Illuminate\Database\Eloquent\Relations\BelongsTo;Techpitの教材にしか見当たらず、他のリレーション系の記事にはなかった。
調べたところ、これは戻り値の型宣言を行うために必要で、これをすることでuser(): BelongsTo: BelongsToが使えるようになり、
戻り値がBelongsTo型以外であればTypeErrorを返すようにしている。

  • photos()は関連付けるために使え、関連付け設定を記載しているメソッド
  • photoは関連づいているデータを取得するための書き方で、 動的プロパティと呼ばれる

次やること

  • Travelog実装を進める
  • メンターさんに聞きたいことまとめる
PHP
Docker
Laravel

2020年10月13日(火)

5.8時間