我一直关注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个分类广告的工作正常,只是尝试为每个分类图像拉一个图像。
答案 0 :(得分:0)
问题是,因为您使用DB::table()...
而不是Eloquent ORM。做这样的事情:
public static function getLatestClassifeds()
{
return self::orderBy('created_at','desc')
->take(3)->get(['ad_title', 'description']);
}