前提・実現したいこと
laravelでアプリケーションのview内で、Articleモデルで定義した、userとのリレーションを取得する際に以下のエラーが起こりました。
(belongsToで返ってきてないというエラー)
試しにArticle.phpの:belongstoを削除したら正常に動きました。
なぜ、belongsToでの型で返ってきていないのになぜ正常に動くのでしょうか?
また、正しく返すためにはどのようにすれば良いのでしょうか?
発生している問題・エラーメッセージ
Return value of App\Article::user() must be an instance of Illuminate\Database\Relations\BelongsTo, instance of Illuminate\Database\Eloquent\Relations\BelongsTo returned (View: /Users/username/wordbooks/wordbook/bbs/resources/views/articles/card.blade.php)
該当のソースコード
Article.php(モデルの部分)
<?php namespace App; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Relations\BelongsTo; class Article extends Model { public function user() :BelongsTo { return $this->belongsTo('App\User'); } }
controllerの部分
public function index() { $articles = Article::all()->sortByDesc('created_at'); return view('articles.index', ['articles' => $articles]); }
viewの部分
{{ $article->user->name }}
試したこと
viewで出力してみました。
{{ dd($article->user->name) }} //nameが出力 {{ dd($article->user) }}//出力なし {{ var_dump($article->user->name) }} //string(6) "name" {{ var_dump($article->user) }}//object(App\User)#1246 (27) {略}
補足情報(FW/ツールのバージョンなど)
laravel6
回答2件
あなたの回答
tips
プレビュー