尝试显示关系数据时出错

时间:2015-10-20 09:28:38

标签: php laravel-5

我一直关注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个分类广告的工作正常,只是尝试为每个分类图像拉一个图像。

1 个答案:

答案 0 :(得分:0)

问题是,因为您使用DB::table()...而不是Eloquent ORM。做这样的事情:

public static function getLatestClassifeds()
{   
    return self::orderBy('created_at','desc')
    ->take(3)->get(['ad_title', 'description']);
}