簡體   English   中英

Laravel - 來自外鍵的名稱未顯示在我的刀片中

[英]Laravel - Name from foreign key doesn't show in my blade

我正在制作一個項目,我在產品中使用商店中的外鍵。 外鍵有效,但是當我想通過使用$product->shop_id->shop_name在我的刀片中顯示它時,它給出了一個空白點。 我的外鍵名為“shop_id”。 沒有店鋪名稱的產品頁面

這是我的代碼:

產品控制器:

public function getProduct()
{
   $products = DB::table('products')->inRandomOrder()->simplePaginate(15);

   return view('product', ['products' => $products]);
}

產品.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>

產品型號

<?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');
    }

}

店鋪模型

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Shop extends Model
{
    use HasFactory;

    /**
     * @var string
     *
     *
     */
    protected $table = 'shops';

    /**
     * @var array
     *
     *
     */
    protected $fillable = [
        'shop_name',
    ];

    /**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function product()
    {
        return $this->belongsTo('App\Product', 'shop_id')->withDefault();
    }


}

您在關系聲明中提供了錯誤的命名空間和鍵。 您必須按照下面的示例進行更改才能使用這些方法

Product.php

public function shop()
{
    return $this->hasOne(Shop::class, 'shop_id', 'shop_id');
}

之后,您可以使用訪問產品商店

<p>Winkel: {{ $product->shop->shop_name }}</p>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM