2015-10-20 79 views
0

我一直在關注Laracasts項目 - 傳單,並且已經結束了本系列中當前的視頻。我決定自己去擴展應用程序。嘗試顯示關係數據時出錯

我試圖在主頁上顯示最新的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

什麼應該在' - >照片'對象?它沒有在任何地方定義。 – Siper

+0

剛剛編輯帖子,現在包括位於分類模型中的photos()函數。 –

回答

0

問題是,因爲您使用DB::table()...而不是Eloquent ORM。做這樣的事情:

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

給了一個去,現在我得到這個錯誤:當不在對象上下文中使用$ this –

+0

@ Mike.Linford對不起,我忘記了這一點。更新答案,我檢查了他們,一切正常。 – Siper

+0

輝煌,這是固定的。謝謝。但是我收到另一個問題。獲取屬於分類的第一個圖像的最佳方法是什麼?我目前正在拉動所有圖像,然後在我看來,我只是在數組中顯示第一個鍵。我覺得這是不對的。如果用戶還沒有上傳用於分類顯示在主頁上的圖像,我還遇到了顯示佔位符圖像的問題。我如何檢查分類是否沒有圖像,如果沒有,請顯示其他內容? –

相關問題