如何检索一对多关系。 属性 [produks] 在此集合实例上不存在

how to retrieve one to many relationship. Property [produks] does not exist on this collection instance

运算符模型

public function produk()
{
    return this->hasMany(Produk::class);
}

产品型号

public function operator()
{
    return this->belongsTo(Operator::class);
}

控制器

public function operator()
{
    $data = Operator::all();
    return view('data', compact('data'));
}

查看

@foreach ($data as $o)
    <tr>            
        <td>{{ $loop->iteration }}</td>
        <td>{{ $o->n_oper }}</td>
        <td>
            @foreach ($data->produk as $p)
                {{ $p->n_prod }}
            @endforeach
        </td>
    </tr>
@endforeach

输出

Exception Property [produk] does not exist on this collection instance. (View: C:\xampp\htdocs\laravel\oni\resources\views\data.blade.php)

出了什么问题?请帮助我,我是新手

您正在调用集合上的关系。你必须像这样在单个实例上调用它

 @foreach ($data as $o)
<tr>            
    <td>{{ $loop->iteration }}</td>
    <td>{{ $o->n_oper  }}</td>
    <td>
        @foreach ($o->produk as $p)
            {{$p->n_prod}}
        @endforeach
    </td>
</tr>
@endforeach

还有变化

    return this->hasMany(Produk::class);

这个到

    return $this->hasMany(Produk::class);

以及其他关系,例如

return this->belongsTo(Operator::class);

return $this->belongsTo(Operator::class);

我希望它的工作。

这可能是错字??无论如何,您正在调用收集关系。关系属于一个对象。

@foreach ($data as $o)
    <tr>            
        <td>{{ $loop->iteration }}</td>
        <td>{{ $o->n_oper }}</td>
        <td>
            @foreach ($o->produk as $p)
                {{ $p->n_prod }}
            @endforeach
        </td>
    </tr>
@endforeach

data为合集。你必须在 $o

上调用关系

可能还有其他错别字。您缺少 $ 登录 $this 关键字。更新你的关系

public function produk()
{
    return $this->hasMany(Produk::class);
}

public function operator()
{
    return $this->belongsTo(Operator::class);
}