У меня есть модели Member
, Loan
и Interestamount
. Loan
имеет отношения hasMany
с Interestamount
. Я не могу получить доступ к данным из Interestamount
.
Я могу показать ссуду id
и Interestamount
в клинке, но не могу отсортировать Interestamount
для заданного Loan
.
< Сильный > LoanController.php
public function loanInterest($criteria){
//$loanData = Loan::all();
$loanData =Loan::findOrFail($criteria);
return view($this->_pagePath.'loan.loaninterest',compact('loanData'));
}
web.php
Route::any('loaninterest/{criteria?}','LoanController@loanInterest')
->name('loaninterest');
< Сильный > Loan.php
use Illuminate\Database\Eloquent\Model;
class Loan extends Model
{
protected $fillable = [
'amount',
'interest',
'status',
'duration',
'member_id',
'loan_type_id',
'interest_type_id',
'loan_payment_type_id'
];
// protected $appends = 'interest_amount
public function getInterestAmountAttribute()
{
return ($this->amount)/100 * $this->interest;
}
public function interestamount()
{
return $this->hasMany(InterestAmount::class,'loan_id','id');
}
}
< Сильный > InterestAmount.php
use Illuminate\Database\Eloquent\Model;
class InterestAmount extends Model
{
protected $fillable = ['interestamount'];
public function loan()
{
return $this->belongsTo(Loan::class,'loan_id','id');
}
}
< Сильный > loaninterest.blade.php
<tr>
<td>{{$loanData->member->name}}</td>
@foreach($loanData->interestamount() as $int)
<td>{{$int->interestamount}} </td>
@endforeach
</tr>
< Сильный > loan.blade.php
<a href="{{route('loaninterest', $loan->id) }}">Interest detail</a>
3 ответа
$loanData->interestamount()
возвращает экземпляр построителя запроса вместо результата запроса.
Есть несколько способов получить результат от функции отношения.
Одним из них является функция вызова get()
Пример
$loanData->interestamount()->get();
Другой способ - вызвать функцию отношения not as a function but as a property
.
Пример
$loanData->interestamount;
Так в ваших блейд-файлах @foreach()
@foreach($loanData->interestamount as $int)
<td>{{$int->interestamount}} </td>
@endforeach
Измените свой кредитный интерес на это
<td>{{$loanData->member->name}}</td>
@foreach($loanData->interestamount as $int)
<td>{{$int->interestamount}} </td>
@endforeach
</tr>
Когда мы используем $loanData->interestamount()
, он ссылается на построитель запросов, но когда мы используем $loanData->interestamount
, он возвращает связанную коллекцию так же, как $loanData->interestamount()->get()
Я не знаю причину, но я сделал это, и это сработало.
<td>{{$loanData->member->name}}</td>
@foreach($loanData->interestamount()->get() as $int)
<td>{{$int->interestamount}} </td>
@endforeach
Похожие вопросы
Новые вопросы
laravel
Laravel - это бесплатная веб-инфраструктура PHP с открытым исходным кодом, созданная Тейлором Отвеллом и предназначенная для разработки веб-приложений по архитектурному шаблону модель-представление-контроллер (MVC) на основе Symfony. Исходный код Laravel размещен на GitHub и лицензирован в соответствии с условиями лицензии MIT.