Eloquent 预加载 "Property [service_code] does not exist on this collection instance"

Eloquent Eager Loading "Property [service_code] does not exist on this collection instance"

我无法弄清楚 eager loading 如何处理以下示例。这是我当前的数据库,有两个 tables,Quotes:存储一般信息的地方,以及 QuotesDetails:存储 Quotes 中每个 Quote 的详细信息的地方。

在模型中我有以下结构:

Quotes.php

class Quotes extends Model
{


    public function quotesdetails()
    {
        return $this->hasMany('App\QuotesDetails', 'quoteid', 'id');
    }
}

和QuotesDetails.php具有以下模型:

class QuotesDetails extends Model
{

    public function quotes()
    {
        return $this->belongsTo('App\Quotes', 'id', 'quoteid');
    }
}

我使用了 hasMany(在引号中),因为每个引号可以 have/display 3-4 个引号详细信息。

我在我的控制器中使用以下查询:

$returnquotes = Quotes::with('quotesdetails')->where('id', '=', $quoteid)->get();

在我看来,我使用以下结构:

        @foreach ($returnquotes as $quotes)
            {{$quotes->shipcity }}
            {{$quotes->quotesdetails->service_code }}
        @endforeach

shipcity显示信息没有问题,但是service_code不显示,报错

老实说,我认为它必须使用此架构,但我无法弄清楚为什么不起作用。我的想法:

对理解预先加载的逻辑有任何帮助 eloquent 和 laravel 感谢。

$quotes->quotesdetails 本身就是一个集合(有 很多)所以你需要使用另一个 foreach 迭代它:

@foreach ($returnquotes as $quotes)
  {{$quotes->shipcity }}
  @foreach ($quotes->quotesdetails as $quotedetail)
    {{$quotedetail->service_code }}
  @endforeach
@endforeach