Laravelのいいところは、モデルを定義しておいて、リレーション関係を明示しておくとSQLを書かなくてもテーブル結合したデータが持ってくることができるところ。
非常に便利な機能ですが、SQLの基礎や生のwebアプリケーションのform,submit,HttpRequest,HttpResponseといった根幹を理解しないと、言語やフレームワークが変わったときに対応できないのでは…と思うおじさんの意見です。
そんなモデルのリレーション機能ですが、Laravel8だと書き方が変わっているようです。
以前までの書き方が下記。モデル名のパスをテキストで指定します。(以前のバージョンの場合、ModelというディレクトリもなくApp直下なのですが)
public function board()
{
return $this->hasOne('App\Models\Board');
}
動かん。
ということで調べてみました。
解決策
下記を参考にさせていただきました。やはり困ったときは公式サイト。
アクション構文を使用する
Laravel8はやはり書き方を変えないといけないみたいです。
public function board()
{
//return $this->hasOne('App\Models\Board',"person_id");
return $this->hasOne(Board::class);
}
やっぱりこの書き方。クラスを引数にします。
根幹部分はあまり変えないでほしいです。