从刀片中的外键获取数据

Posted

技术标签:

【中文标题】从刀片中的外键获取数据【英文标题】:Get data from foreign key in blade 【发布时间】:2021-07-07 22:25:03 【问题描述】:

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

这是我的产品型号:

<?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) 里看看会发生什么吗? 【参考方案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');
    

【讨论】:

以上是关于从刀片中的外键获取数据的主要内容,如果未能解决你的问题,请参考以下文章

根据codeigniter中的外键从两个表中获取json编码数据

如何编写一个查询,根据 ms 访问的子表中的外键获取信息?

如何使用 CodeIgniter 3 中的外键从表中获取列数据

如何从使用实体框架的外键链接的多个表中获取所有数据?

如何从对象的外键中获取对象的值?

如何通过laravel中的外键检索记录的完整数据?