Laravel 访问具有一对多关系的子属性

Laravel 访问具有一对多关系的子属性,laravel,eloquent,has-many,Laravel,Eloquent,Has Many,我有会员、贷款和利息金额贷款与利息金额有很多关系。我似乎无法从Interestamount访问数据 我可以在blade中显示贷款id和Interestamount,但无法为给定的贷款排序Interestamount LoanController.php public function loainterest($criteria){ //$loanData=贷款::全部(); $loanData=贷款::findOrFail($criteria); 返回视图($this->\u pagePath.

我有
会员
贷款
利息金额
<代码>贷款与
利息金额
有很多关系。我似乎无法从
Interestamount
访问数据

我可以在blade中显示贷款
id
Interestamount
,但无法为给定的
贷款排序
Interestamount

LoanController.php

public function loainterest($criteria){
//$loanData=贷款::全部();
$loanData=贷款::findOrFail($criteria);
返回视图($this->\u pagePath.loan.loainterest',compact('loanData');
}
web.php

Route::any('loaninterest/{criteria?}','LoanController@loanInterest')
->名称(“贷款利息”);
Loan.php

使用illumb\Database\elount\Model;
类贷款扩展模型
{
受保护的$fillable=[
“金额”,
“利息”,
"地位",,
“持续时间”,
“成员id”,
“贷款类型id”,
“利息类型id”,
“贷款\付款\类型\ id”
];
//受保护的$appends='利息\金额
公共函数getInterestAmountAttribute()
{
返回($this->amount)/100*$this->利息;
}
公共职能部门利益计算()
{
return$this->hasMany(InterestAmount::class,'loan_id','id');
}
}
InterestAmount.php

使用illumb\Database\elount\Model;
类兴趣计数扩展模型
{
受保护的$fillable=['interestamount'];
公共职能贷款()
{
返回$this->belongsTo(Loan::class,'Loan_id','id');
}
}
loaninterest.blade.php


{{$loanadata->member->name}
@foreach($loanada->interestamount()作为$int)
{{$int->interestamount}
@endforeach
loan.blade.php


将您的loaninterest更改为此

<td>{{$loanData->member->name}}</td>
  @foreach($loanData->interestamount as $int)
   <td>{{$int->interestamount}} </td>
  @endforeach     
</tr>
{{$loanadata->member->name}
@外汇($loanData->利息金额为$int)
{{$int->interestamount}
@endforeach

当我们使用
$loanada->interestamount()
时,它指的是一个查询生成器,但当我们使用
$loanada->interestamount
时,它返回的相关集合与
$loanada->interestamount()->get()
将loaninterest更改为该集合

<td>{{$loanData->member->name}}</td>
  @foreach($loanData->interestamount as $int)
   <td>{{$int->interestamount}} </td>
  @endforeach     
</tr>
{{$loanadata->member->name}
@外汇($loanData->利息金额为$int)
{{$int->interestamount}
@endforeach

当我们使用
$loanada->interestamount()
时,它指的是查询生成器,但当我们使用
$loanada->interestamount
时,它返回的相关集合与
$loanada->interestamount()->get()
$loanada->interestamount()
返回的是查询生成器实例,而不是查询结果

有几种方法可以从关系函数中获得结果

其中之一是调用
get()
函数

Exmaple

$loanadata->interestamount()->get();
另一种方法是调用关系函数
,不是作为函数,而是作为属性

示例

$loanada->interestamount;
因此,在您的刀片文件中
@foreach()

@foreach($loanada->interestamount as$int)
{{$int->interestamount}
@endforeach

$loanadata->interestamount()
返回查询生成器实例而不是查询结果

有几种方法可以从关系函数中获得结果

其中之一是调用
get()
函数

Exmaple

$loanadata->interestamount()->get();
另一种方法是调用关系函数
,不是作为函数,而是作为属性

示例

$loanada->interestamount;
因此,在您的刀片文件中
@foreach()

@foreach($loanada->interestamount as$int)
{{$int->interestamount}
@endforeach

我不知道原因,但我这样做了,效果很好

  <td>{{$loanData->member->name}}</td>
  @foreach($loanData->interestamount()->get() as $int)
 <td>{{$int->interestamount}} </td>
  @endforeach   
{{$loanadata->member->name}
@foreach($loanada->interestamount()->get()作为$int)
{{$int->interestamount}
@endforeach

我不知道原因,但我这样做了,效果很好

  <td>{{$loanData->member->name}}</td>
  @foreach($loanData->interestamount()->get() as $int)
 <td>{{$int->interestamount}} </td>
  @endforeach   
{{$loanadata->member->name}
@foreach($loanada->interestamount()->get()作为$int)
{{$int->interestamount}
@endforeach

而不是
$loanada->interestamount()
us
$loanada->interestamount
。而不是
$loanada->interestamount()
us
$loanada->interestamount
。我实际上按照您最初提到的那样做了,它给出了错误foreachi提供的无效参数。我实际上按照您最初提到的那样做了,它给出了错误foreachi提供的无效参数,然后首先检查这个
$loadData->interestamount
。删除
@foreach()
一段时间,然后编写这个
{{{$loanadata->interestamount}}
是的,当我这样做时,它只会给出许多“interestamount”中的一个。我使用了interestamount()->get(),我给出了所有的“interestamout”,我认为这是因为与
getInterestAmountAttribute
有些混淆。老实说,你的关系名字不合适。(这不是一个错误,但不是一个正确的名称)由于它返回许多利息金额,您应该将其命名为
interestAmounts()
(复数)。并且不要忘记使用camel case。是的,我之前就意识到了这一点。正如您在getInterestAmountAttribute中提到的,实际上是“利息金额”引起了问题。所以我把它改成了“兴趣山”。无论如何,谢谢你。我将进行更改并查看。然后首先检查此
$loadData->interestamount
。删除
@foreach()
一段时间,然后编写这个
{{{$loanadata->interestamount}}
是的,当我这样做时,它只会给出许多“interestamount”中的一个。我用了兴趣