[英]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.