Laravel Eloquent 関連関数名
P粉729198207
2023-07-23 17:45:15
<p>「投稿」と「カテゴリ」という 2 つのテーブルがあります。 「投稿」と「カテゴリ」の関係は多対一です。したがって、「Post」クラス モデルのコードは次のようになります。
<pre class="brush:php;toolbar:false;"><?php
名前空間 AppModel。
IlluminateDatabaseEloquentFactoriesHasFactory を使用します。
IlluminateDatabaseEloquentModel を使用します。
クラス Post はモデルを拡張します
{
HasFactoryを使用します。
$guarded = ['id'];
パブリック関数カテゴリ()
{
return $this->belongsTo(Category::class);
}
}</pre>
<p>このコードを使用すると、アプリケーションは正常に実行されます。 </p><p>問題は、カテゴリ関数名を「カテゴリ」に変更しようとして、次のように投稿のカテゴリ名にアクセスしようとしたときです。</p><p>
<code>Post::first()->categories->name</code>、laravel では次のようなエラーが発生します<code>D:BelajarProgramCODINGANLaravelapplicationcoba-laraveleval() で null のプロパティ "name" を読み取ろうとしました'd コード。</code></p>
<p>(編集</p>
<p>Eloquent関数名が「category」の場合、「Post::first()->category」は投稿のカテゴリを返します。ただし、関数名を「categories」に変更し、「Post::first()->categories」を使用してアクセスしようとすると、null が返されます。 </p>
<p>)</p>
<p>カテゴリクラスモデルのEloquent関連関数の名前をランダムな名前に変更しようとしましたが、それでもアクセスでき、Laravelはエラーを報告しません。カテゴリクラスモデルのコードは次のとおりです。 </p>
<pre class="brush:php;toolbar:false;"><?php
名前空間 AppModel。
IlluminateDatabaseEloquentFactoriesHasFactory を使用します。
IlluminateDatabaseEloquentModel を使用します。
クラス カテゴリはモデルを拡張します
{
HasFactoryを使用します。
$guarded = ['id'];
パブリック関数posts(){
return $this->hasMany(Post::class);
}
}</pre>
<p>誰か助けてくれませんか?カテゴリ クラス モデルでは Eloquent 関数名を変更できるのに、投稿クラス モデルでは変更できないのはなぜですか? </p>
次の手順を実行すると、問題が解決するはずです:
リーリー