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不显示,报错
老实说,我认为它必须使用此架构,但我无法弄清楚为什么不起作用。我的想法:
在控制器中:在控制器中使用 "with('quotesdetails')" 它必须建立出现在 Quotes.php 中的关系,名称 -> quotedetails 在 QuotesDetails.php[ 中关联了许多注册表=18=]
在视图中:使用“$quotes->quotesdetails->service_code”必须检索与引号 table 关联的 service_code(我正在使用foreach 因为 quotesdetails 每个报价可以有多个注册表)
在模型中:我将 "hasMany" 用于 Quotes.php,因为从属 table 是 QuotesDetails 而 "belongsTo" 在 QuotesDetails.php 中用于逆因.
对理解预先加载的逻辑有任何帮助 eloquent 和 laravel 感谢。
$quotes->quotesdetails
本身就是一个集合(有 很多)所以你需要使用另一个 foreach 迭代它:
@foreach ($returnquotes as $quotes)
{{$quotes->shipcity }}
@foreach ($quotes->quotesdetails as $quotedetail)
{{$quotedetail->service_code }}
@endforeach
@endforeach
我无法弄清楚 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不显示,报错
老实说,我认为它必须使用此架构,但我无法弄清楚为什么不起作用。我的想法:
在控制器中:在控制器中使用 "with('quotesdetails')" 它必须建立出现在 Quotes.php 中的关系,名称 -> quotedetails 在 QuotesDetails.php[ 中关联了许多注册表=18=]
在视图中:使用“$quotes->quotesdetails->service_code”必须检索与引号 table 关联的 service_code(我正在使用foreach 因为 quotesdetails 每个报价可以有多个注册表)
在模型中:我将 "hasMany" 用于 Quotes.php,因为从属 table 是 QuotesDetails 而 "belongsTo" 在 QuotesDetails.php 中用于逆因.
对理解预先加载的逻辑有任何帮助 eloquent 和 laravel 感谢。
$quotes->quotesdetails
本身就是一个集合(有 很多)所以你需要使用另一个 foreach 迭代它:
@foreach ($returnquotes as $quotes)
{{$quotes->shipcity }}
@foreach ($quotes->quotesdetails as $quotedetail)
{{$quotedetail->service_code }}
@endforeach
@endforeach