Php 外键关系在雄辩中不起作用
我研究过这个答案: 还有这个 但还是不能解决我的问题。 我有两个模型:产品和类别,我想在我的刀片页面上显示产品数据及其类别[课程名称]。我知道可以通过将其添加到控制器中的返回数据来实现这一点,但是我希望使用Eloquent来实现这一点,但是我收到了错误 这是我的密码: 产品型号Php 外键关系在雄辩中不起作用,php,mysql,laravel,eloquent,blade,Php,Mysql,Laravel,Eloquent,Blade,我研究过这个答案: 还有这个 但还是不能解决我的问题。 我有两个模型:产品和类别,我想在我的刀片页面上显示产品数据及其类别[课程名称]。我知道可以通过将其添加到控制器中的返回数据来实现这一点,但是我希望使用Eloquent来实现这一点,但是我收到了错误 这是我的密码: 产品型号 protected $table = 'product_details'; public function category() { return $this->belongsTo('App\categor
protected $table = 'product_details';
public function category() {
return $this->belongsTo('App\category', 'category_id');
}
protected $table = 'category';
public function product() {
return $this->hasMany('App\product');
}
类别模型
protected $table = 'product_details';
public function category() {
return $this->belongsTo('App\category', 'category_id');
}
protected $table = 'category';
public function product() {
return $this->hasMany('App\product');
}
ProductController
public function index()
{
$products = product::select('id', 'product_name', 'category_id', 'is_active', 'created_at', 'updated_at')->get();
return view('admin/product/index', compact('products'));
}
索引刀片页面
{{ $product->category->category_name }}
表格
id
product_name
catgory_id
产品详细信息
id
product_name
catgory_id
类别
id
category_name
我得到的错误是:
正在尝试获取非对象的属性
可能您使用了错误的模型名称,默认情况下,模型名称为:
App\Foobar
将类别的“C”字母大写
protected $table = 'product_details';
public function category() {
return $this->belongsTo('App\Category', 'category_id');
}
将产品的“p”字母大写
protected $table = 'category';
public function product() {
return $this->hasMany('App\Product');
}
由于产品表中
Category\u id
的值为null
或类别表中缺少的其他id
值,因此缺少类别。您可以通过以下方式检查刀片中缺少的值:
{{ $product->category->category_name or 'Unknown Category' }}
这就是我对它的看法
$products = product::with('category')->select('id', 'product_name', 'category_id', 'is_active', 'created_at', 'updated_at')->get();
{{ $product->category->category_name ?? 'Not Available'}}
在控制器中,您写道:
$products = product::select('id', 'product_name', 'category_id', 'is_active', 'created_at', 'updated_at')->get();
但在您的刀片文件中,您正在调用:
{{ $product->category->category_name }}
您是否在blade文件中编写了一个foreach循环?例如:
@foreach ($products as $product)
{{ $product->category->category_name }}
@endforeach
否则,您应该先调用->而不是->获取并更正您的输入错误。因此,ProductController上的代码是:
public function index()
{
$products = product::select('id', 'product_name', 'category_id', 'is_active', 'created_at', 'updated_at')->get();
return view('admin/product/index', compact('products'));
}
{{ $product->category->category_name }}
而刀片页面上的代码是:
public function index()
{
$products = product::select('id', 'product_name', 'category_id', 'is_active', 'created_at', 'updated_at')->get();
return view('admin/product/index', compact('products'));
}
{{ $product->category->category_name }}
你能发布
dd($product->category)
的输出吗?我怀疑该值为null,可能是因为category_id为空或与category表不匹配