Я следил за проектом Laracasts Project-Flyer и пришел к концу текущих видеороликов этой серии. Я решил уйти и сам расширить приложение.Ошибки при отображении реляционных данных
Я пытаюсь отобразить последние 3 листовки (или в моем случае, объявления) на главной странице вместе с изображением.
Я смог вытащить последние 3 записи и отобразить их на главной странице, но я старался следовать одному и тому же подходу к отображению изображений на классифицированной странице, для изображений для каждой категории на на главной странице.
Вот мой код, который я использовал.
объявления Модель сниппет:
<?php
namespace App;
use DB;
use Illuminate\Database\Eloquent\Model;
class classified extends Model
{
...
public function photos()
{
return $this->hasMany('App\classified_photo');
}
...
public static function getLatestClassifeds()
{
return DB::table('classifieds')
->select('ad_title','description')
->orderBy('created_at','desc')
->take(3)
->get();
}
...
Главная страница Контроллер:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Requests\classifiedRequest;
use App\Http\Controllers\Controller;
use App\classified;
use App\classified_photo;
class HomeController extends Controller
{
public function show()
{
$classifieds = classified::getLatestClassifeds();
return view('pages.home', compact('classifieds'));
}
}
Главная Вид:
@foreach($classifieds as $classified)
<div class="col-xs-6 col-sm-4">
<div class="col-xs-12">
@if($classified->photos)
@foreach($classified->photos as $photo)
<img src="/{{$photo->thumbnail_path}}" class="img-responsive">
@endforeach
@endif
</div>
<div class="col-xs-12">
<div class="classified-desc">
<h2>{{$classified->ad_title}}</h2>
<p>{{$classified->description}}</p>
</div>
</div>
<div class="col-xs-12">
<div class="btn-group btn-group-justified" role="group" aria-label="...">
<div class="btn-group" role="group">
<button type="button" class="btn btn-default">Left</button>
</div>
<div class="btn-group" role="group">
<button type="button" class="btn btn-default">Right</button>
</div>
</div>
</div>
</div>
@endforeach
Этот код возвращает эту ошибку, когда я пытаюсь посмотреть на домашней странице:
Undefined property: stdClass::$photos (View: /var/www/html/barrys-bikes.dev/resources/views/pages/home.blade.php)
Как я уже сказал, показ 3 объявлений работает нормально, это именно эта проблема, пытаясь затем вытащить изображение для каждого из них.
Что должно быть в объекте '-> photos'? Он нигде не определен. – Siper
Только что отредактировал сообщение, чтобы теперь включить функцию photos(), которая находится в классифицированной модели. –