Php Laravel-外键中的名称不';在我的刀片上看不到
我正在做一个项目,在那里我使用的外键从商店在产品。外键可以工作,但是当我想用Php Laravel-外键中的名称不';在我的刀片上看不到,php,laravel,eloquent,Php,Laravel,Eloquent,我正在做一个项目,在那里我使用的外键从商店在产品。外键可以工作,但是当我想用$product->shop\u id->shop\u name在我的刀片中显示它时,它会给出一个空白点。我的外键名为“shop_id” 这是我的代码: 产品控制器: public function getProduct() { $products = DB::table('products')->inRandomOrder()->simplePaginate(15); return view(
$product->shop\u id->shop\u name
在我的刀片中显示它时,它会给出一个空白点。我的外键名为“shop_id”
这是我的代码:
产品控制器:
public function getProduct()
{
$products = DB::table('products')->inRandomOrder()->simplePaginate(15);
return view('product', ['products' => $products]);
}
product.blade.php
@foreach($products as $product)
<div class="column4 ">
<div class="box ProductPage">
<img src="{{$product->product_image}}" alt="" class="image image-full"/>
<h3>{{$product->product_name}}</h3>
<p>Inhoud: {{$product->product_volume}}</p>
<p><u>€{{$product->product_price}}</u></p>
<p>Winkel:{{$product->shop_id->shop_name}}</p>
</div>
<a href="{{$product->product_url}}" class="button button-small">Bekijk product</a>
</div>
@foreach($products作为$product)
product_image}“alt=”“class=“图像完整”/>
{{$product->product_name}
Inhoud:{{$product->product_volume}
欧元{{$product->product_price}
温克尔:{{$product->shop_id->shop_name}
产品模型
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
use HasFactory;
/**
* @var string
*
*
*/
protected $table = 'products';
/**
* @var array
*
*
*/
protected $fillable = [
'product_name', 'product_volume', 'product_price', 'product_url', 'product_image',
];
/**
* @return \Illuminate\Database\Eloquent\Relations\HasOne
*
*
*/
public function shop()
{
return $this->hasOne('App\Shop', 'shop_id');
}
}
您在关系声明中提供了错误的命名空间和键。您必须按照下面的示例进行更改才能使用这些方法
Product.php
public function shop()
{
return $this->hasOne(Shop::class, 'shop_id', 'shop_id');
}
之后,您可以使用
<p>Winkel: {{ $product->shop->shop_name }}</p>
Winkel:{{$product->shop->shop\u name}
将$product->shop\u id
更改为$product->shop
和products
表上的主键列名是什么?是默认的id
还是您已将其更改为其他内容?@daan Verweijt感谢您的回复,但仍然没有在刀片中显示店铺名称。可能shop_name
不是正确的列名吗?产品在数据库中是否有有效的店铺?向我显示您的github repo以查看更多文件这是我的,这是我更新的店铺关系,应用这些更改,现在一切都应该正常。将问题标记为最佳。顺便说一句,您的表列命名不是按约定的,所以ravel无法自动解析外键和所有者密钥名称
<p>Winkel: {{ $product->shop->shop_name }}</p>