Php 恢复与拉拉维尔的雄辩关系
当我试图从我的产品中获取类别名称时,我发现在检索结果之前,我必须使用“C”而不是“C”。然而,当我尝试获取供应商名称时,小写的s就可以了。我想知道是什么导致了这种差异。此外,如果I dd($var),则关系字段应为空。我假设它与我的模型中定义的关系有关 Blade.phpPhp 恢复与拉拉维尔的雄辩关系,php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,当我试图从我的产品中获取类别名称时,我发现在检索结果之前,我必须使用“C”而不是“C”。然而,当我尝试获取供应商名称时,小写的s就可以了。我想知道是什么导致了这种差异。此外,如果I dd($var),则关系字段应为空。我假设它与我的模型中定义的关系有关 Blade.php <td>{{$product->Category->name}}</td> <td>{{$product->salePrice}}</td>
<td>{{$product->Category->name}}</td>
<td>{{$product->salePrice}}</td>
<td>{{$product->stock}}</td>
<td>{{$product->supplier->company_name}}</td>
Category.php
public function category()
{
return $this->belongsTo('App\Category','category');
}
public function supplier()
{
return $this->belongsTo('App\Supplier','supplier_id');
}
public function product()
{
return $this->hasMany('App\Product');
}
public function product()
{
return $this->hasMany('App\Product');
}
Supplier.php
public function category()
{
return $this->belongsTo('App\Category','category');
}
public function supplier()
{
return $this->belongsTo('App\Supplier','supplier_id');
}
public function product()
{
return $this->hasMany('App\Product');
}
public function product()
{
return $this->hasMany('App\Product');
}
您的产品型号上缺少
\u id
:
public function category()
{
return $this->belongsTo('App\Category','category_id');
}
还是空着
public function category()
{
return $this->belongsTo('App\Category');
}
在您的控制器中
public function index()
{
$products = Product::all()->with('category');
return view('your_view', compact('products'));
}
如果您dd
在您的视图中您将看到,由于
当作为属性访问有说服力的关系时,关系数据是“延迟加载”的。这意味着在您首次访问属性之前,不会实际加载关系数据。然而,在查询父模型时,雄辩者可以“急切地加载”关系
@foreach($products作为$product)
{{$product->category->name}
{{$product->salePrice}
{{$product->stock}
{{$product->供应商->公司名称}
@endforeach
谢谢您的回复,但所引用的列的名称是category而不是category\u id,因此我认为这不是问题所在