Laravel Eloquent關聯函數名稱
P粉729198207
P粉729198207 2023-07-23 17:45:15
0
1
400
<p>我有兩個表,分別是"posts"和"categories"。 "posts"和"categories"之間的關係是多對一。因此,"Post"類別模型中的程式碼如下:</p> <pre class="brush:php;toolbar:false;"><?php namespace AppModels; use IlluminateDatabaseEloquentFactoriesHasFactory; use IlluminateDatabaseEloquentModel; class Post extends Model { use HasFactory; protected $guarded = ['id']; public function category() { return $this->belongsTo(Category::class); } }</pre> <p>使用這段程式碼,應用程式成功運行。 </p><p>問題是,當我嘗試將類別函數名稱更改為"categories",並且嘗試像這樣訪問帖子的類別名稱時:</p><p> <code>Post::first()->categories->name</code>, laravel give an error like this <code>Attempt to read property "name" on null in D:BelajarProgramCODINGANLaravel 'd code.</code></p> <p>(edited</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 namespace AppModels; use IlluminateDatabaseEloquentFactoriesHasFactory; use IlluminateDatabaseEloquentModel; class Category extends Model { use HasFactory; protected $guarded = ['id']; public function posts(){ return $this->hasMany(Post::class); } }</pre> <p>有人可以幫我嗎?為什麼我可以更改類別類別模型中的Eloquent函數名稱,但無法在帖子類別模型中更改? </p>
P粉729198207
P粉729198207

全部回覆(1)
P粉330232096

進行以下操作應該可以解決問題:

public function categories()
{
    return $this->belongsTo(Category::class, 'category_id', 'id');
}
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板