簡體   English   中英

Laravel “with”未填充相關 model

[英]Laravel “with” is not populate related model

我在 Laravel Eloquent 中有兩個表:

UserCategory:
id | user | category

Category:
id | name 

UserCategories 涉及到 Category 槽belongsTo

class UserCategory extends Model
{
   public function category()
   {
       return $this->belongsTo('App\Category', 'category');
   }
}

但是當我嘗試使用類別獲取 UserCategories 時,我得到了 integer 值(而不是類別模型)

$categories = [];
$userCategory = UserCategory::where('user', $user->id)->with('category')->get();

foreach($userCategory as $item) {
   $categories[] = $item->category->name;
}   

當我嘗試獲取類別的名稱時,我看到了第二個錯誤:

試圖獲取非對象的屬性“名稱”

奇怪的是,當我使用dd($item)時,我看到$item與類別 object 有正確的關系,但是dd($item->category)返回 integer 值(類別 id)而不是類別 Z20F35E6380FDAF946

你有沖突的名字。 您有一個category列和一個category關系。 通過說$item->category它向您顯示category列值。 嘗試將關系名稱更改為其他名稱,看看是否有效。

最佳實踐是使用category_id的列名,但如果在您的情況下更改列名不可行,那么關系名稱也可以正常工作。

在此處更改您的關系名稱或 ID 名稱,因為在這里您的關系名稱和列名稱相同

class UserCategory extends Model
{
   public function category()
   {
       return $this->belongsTo(Category::class, 'category');
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM