Nama fungsi berkaitan Laravel Eloquent
P粉729198207
2023-07-23 17:45:15
<p>Saya mempunyai dua jadual iaitu "posts" dan "categories". Hubungan antara "siaran" dan "kategori" adalah banyak dengan satu. Oleh itu, kod dalam model kelas "Post" adalah seperti berikut: </p>
<pre class="brush:php;toolbar:false;"><?php
ruang nama AppModels;
gunakan IlluminateDatabaseEloquentFactoriesHasFactory;
gunakan IlluminateDatabaseEloquentModel;
Kelas Pos memanjangkan Model
{
gunakan HasFactory;
dilindungi $guarded = ['id'];
kategori fungsi awam()
{
pulangkan $this->belongsTo(Kategori::kelas);
}
}</pre>
<p>Menggunakan kod ini, aplikasi berjalan dengan jayanya. </p><p>Masalahnya ialah apabila saya cuba menukar nama fungsi kategori kepada "kategori" dan saya cuba mengakses nama kategori siaran seperti ini: </p><p>
<kod>Siaran::first()->kategori->nama</kod>, laravel memberikan ralat seperti ini <kod>Cuba untuk membaca sifat "nama" pada null dalam D:BelajarProgramCODINGANLaravelapplicationcoba-laraveleval() 'd kod.</code></p>
<p>(diedit</p>
<p>Apabila nama fungsi Eloquent ialah "kategori", "Post::first()->category" mengembalikan kategori siaran. Walau bagaimanapun, apabila saya cuba menukar nama fungsi kepada "kategori" dan mengaksesnya menggunakan "Post::first()->categories", ia mengembalikan null. </p>
<p>)</p>
<p>Saya cuba menukar nama fungsi berkaitan Eloquent dalam model kelas kategori kepada nama rawak, tetapi saya masih boleh mengaksesnya dan Laravel tidak melaporkan ralat. Kod model kelas kategori adalah seperti berikut: </p>
<pre class="brush:php;toolbar:false;"><?php
ruang nama AppModels;
gunakan IlluminateDatabaseEloquentFactoriesHasFactory;
gunakan IlluminateDatabaseEloquentModel;
Kategori kelas memanjangkan Model
{
gunakan HasFactory;
dilindungi $guarded = ['id'];
siaran fungsi awam(){
pulangkan $this->hasMany(Post::class);
}
}</pre>
<p>Bolehkah sesiapa membantu saya? Mengapa saya boleh menukar nama fungsi Eloquent dalam model kelas kategori tetapi tidak dalam model kelas jawatan? </p>
Melakukan perkara berikut seharusnya menyelesaikan masalah: