【问题标题】:Get data from foreign key in blade从刀片中的外键获取数据
【发布时间】:2024-05-16 12:50:01
【问题描述】:

我不知道如何从这个外键中获取数据。我已按照文档中的所有步骤进行操作,但我仍然不知道需要做什么。

这是我的产品型号:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    public function sector(){
        return $this->hasOne('App\Sector');
    }
    public function sale(){
        return $this->hasOne('App\Sale');
    }
}

这是我的部门模型:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Sector extends Model
{
    protected $primaryKey = 'products_id';

    public function product(){
        return $this->belongsTo('App\Product');
    }
}

这是我的控制器(仅索引):

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Product;
use App\Sector;
class ProductController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
       $products = Product::all();
       return view('worker.index', compact('products'));
    }

这是我的观点(仅感兴趣的部分):

@foreach ($products as $product)
    <div class="card" style="width: 18rem;">
        <div class="card-body">
        <h5 class="card-title">{{$product->name}}</h5>
        <p class="card-text">{{$product->codice_prodotto}}</p>

        {{-- <p class="card-text">{{$product->sectors->products_id}}</p> i've tried this and that gets' me this error
        Trying to get property 'products_id' of non-object         --}}

        {{-- <p class="card-text">{{$product->sectors['products_id']}}</p> i've tried this and that get's me this error
        Trying to access array offset on value of type null

        --}}

【问题讨论】:

  • 我认为刀片内的代码是错字试试这样的{{$product-&gt;sector-&gt;products_id}}
  • 不,表的名称是扇区,这样是正确的,但仍然不起作用
  • 你们所有的产品都有扇区吗?
  • @areg 是的,每个产品都有一个部门,product_id 是产品的 id,这是部门表的主键
  • 你能试着把你的 p 标签包裹在@if($product-&gt;sectors) 里看看会发生什么吗?

标签: php eloquent laravel-blade laravel-7


【解决方案1】:

这里

{{$product->sectors->products_id}}

sectors必须sector与函数名相同

{{$product->sector->products_id}}

其他的,foreign_key的默认值必须是product_id而不是products_id, 所以你必须在关系中定义它

 public function sector(){
        return $this->hasOne('App\Sector','products_id');
    }

【讨论】:

    最近更新 更多