У меня есть модели 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>
0
Prithvi Tuladhar 2 Май 2019 в 09:05

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 
1
Tharaka Dilshan 2 Май 2019 в 06:15

Измените свой кредитный интерес на это

<td>{{$loanData->member->name}}</td>
  @foreach($loanData->interestamount as $int)
   <td>{{$int->interestamount}} </td>
  @endforeach     
</tr>

Когда мы используем $loanData->interestamount(), он ссылается на построитель запросов, но когда мы используем $loanData->interestamount, он возвращает связанную коллекцию так же, как $loanData->interestamount()->get()

1
Adnan Mumtaz 2 Май 2019 в 06:10

Я не знаю причину, но я сделал это, и это сработало.

  <td>{{$loanData->member->name}}</td>
  @foreach($loanData->interestamount()->get() as $int)
 <td>{{$int->interestamount}} </td>
  @endforeach   
0
Prithvi Tuladhar 2 Май 2019 в 06:44