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>