【发布时间】:2017-07-07 22:16:02
【问题描述】:
嗨我正在做一个 laravel 培训项目。当我尝试获取每个产品类别名称时,我遇到了模型和关系问题。
这是我的产品模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
public function category()
{
return $this->belongsTo('App\Category');
}
}
和我的类别模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
protected $table = 'categories';
public function products()
{
return $this->hasMany('App\Product');
}
}
当我尝试像这样获取每个产品的类别名称时
@foreach($products as $product)
<tr>
<td>{{ $product->id }}</td>
<td>{{ $product->name }}</td>
<td>{{ $product->category->name }}</td>
</tr>
@endforeach
当我运行页面时出现此错误
Undefined property: stdClass::$category (View: /var/www/html/projectname/resources/views/my/products/index.blade.php)
谁能告诉我是什么导致了这个错误?
更新
这是表结构
产品 : id , name , category_id->unsigned()
分类 : id , 姓名
这是我用来获取 $products 的代码
$user_id = Auth::user()->id;
$products = DB::table('products')->where('user_id', $user_id)->paginate(5);
return view('my.products.index')->withProducts($products);
【问题讨论】:
-
显示产品和类别的表结构,可能是外键不正确
-
@OdinThunder 我更新了帖子,请参阅表结构。然后回复我
-
您的错误消息表明
$product是一个对象/stdClass,而不是您的Product模型的实例。您可以发布用于获取$products变量的代码吗? -
@SaeedKarimi 我已经为你写了答案
标签: laravel relationship categories stdclass