Во-первых, он отлично работает. Но я не знаю, как это сделать на этой странице, но эта проблема может быть решена, когда я изменил код в поле зрения {{$ training- > first() -> sectionsCount}}, но моя спецификация неверна. Моя полная ошибка: -Попытка получить свойство не-объекта в Laravel 5.1
ErrorException in Training.php line 51: Trying to get property of non-object (View:resources/views/Training/index.blade.php)
Мой код в модели: -
public function sectionsCountRelation()
{
return $this->hasOne('App\Schedule')->selectRaw('training_id, count(*) as count')->groupBy('training_id')->where('training_end_date','<',carbon::now());
}
public function getSectionsCountAttribute()
{
return $this->sectionsCountRelation->count;<!--This is line 51 -->
}
В контроллере
public function index()
{
$training = Training::with('sectionsCountRelation')->get();
return view('Training.index',compact('training'));
}
В Вид: - @foreach ($ training as $ training)
<tr>
<td>{{$i}}</td>
<td>{{ $training->category }}</td>
<td>{{ $training->topic }}</td>
<td><a href="/schedule/before_held/{{$training->id}}">{{$training->sectionsCount}}</a></td>
<td><a href="{{route('training.edit',$training->id)}}" class="btn btn-info">Update</a></td>
<td><a href="/schedule/create/{{$training->id}}" class="btn btn-info">Schedule</a></td>
<td>
{!! Form::open(['method' => 'DELETE', 'route'=>['training.destroy', $training->id]]) !!}
{!! Form::submit('Delete', ['class' => 'btn btn-danger']) !!}
<?php $i++;?>
{!! Form::close() !!}
</td>
</tr>
@endforeach
Непонятно, что вы действительно просите. Но вы уже дали ответ «{{$ training-> first() -> sectionsCount}}' делает это. И проблема в том, что '$ training = Training :: with ('sectionsCountRelation') -> get();' возвращает коллекцию (более одного объекта), а не объект. Таким образом, вы либо выбираете один объект из этой коллекции (который выполняет 'first()'), либо прокручиваете эту коллекцию (с помощью 'for .. each'), чтобы показать их все. –