2016-10-05 38 views
0

錯誤消息ErrorException在Macroable.php線74

方法wardrobeimage不存在。 (View:C:\ laragon \ www \ wasamar \ resources \ views \ main_app \ admin \ wardrobe.blade.php)

我有這個問題,當我想打電話給我的衣櫃圖像類來顯示衣櫃的圖像。

衣櫃模型

<?php 

namespace App\Wasamar; 

use Illuminate\Database\Eloquent\Model; 

class Wardrobe extends Model 
{ 
/** 
* The database table used by the model. 
* 
* @var string 
*/ 

protected $table = 'wardrobes'; 

public function wardrobeimage(){ 

    return $this->hasMany('App\Wasamar\Wardrobeimage','wardrobe_id'); 
} 
} 

衣櫃Image類

<?php 

namespace App\Wasamar; 

use Illuminate\Database\Eloquent\Model; 

class Wardrobeimage extends Model 
{ 
/** 
* The database table used by the model. 
* 
* @var string 
*/ 
protected $table = 'wardrobeimages'; 


function wardrobe(){ 

    return $this->belongsTo('App\Wasamar\Wardrobe','id'); 
} 
} 

所以,當我做到這一點提示錯誤

<?php 
$wardrobeAttires = Wardrobe::where('user_id',$user->id)->get(); 
?> 

$wardrobeAttires->wardrobeimage()->where('wardrobe_attire_view',0)->get(); 
+0

' - > get()'返回一個集合。你想要做' - > first()'這會給你一個單一的衣櫃模型。那麼你應該可以在該模型上調用'wardrobeimage()'方法。 – jszobody

+0

@jszobody基於你對我的建議,使用first()而不是get(),它確實有效,但那不是我想要實現的。我希望能夠穿過衣櫥圖像服裝並展示它們。 – udemethegrtman

+0

然後先循環收集。您無法直接在集合上調用模型方法。 – jszobody

回答

0

關係建立是一種誤導。衣櫃有許多衣櫃的圖像。它應該是命名約定的wardrobeimages()。如果wardrobe_id是外鍵,關係應該是:

衣櫃型號:

public function wardrobeimages(){ 

    return $this->hasMany('App\Wasamar\Wardrobeimage','wardrobe_id'); 
} 

Wardrobeimage:

function wardrobe(){ 

    return $this->belongsTo('App\Wasamar\Wardrobe','wardrobe_id'); 
} 

,並在控制器:

$wardrobeAttires = Wardrobe::with(['wardrobeimage'=>function($query) 
         { 
          $query->where('wardrobe_attire_view',0); 
         }]) 
       ->where('user_id',$user->id)->get(); 

這給衣櫃的收集Attres:

foreach($wardrobeAttires as $wardrobeAttire) 
{ 
    foreach($wardrobeAttire->wardrobeimages as $wardrobeimage) 
    { 
      print_r($wardrobeimage); 
    } 
} 
0

我想通了,但感謝大家的支持。

@foreach($wardrobeAttires as $wardrobeAttire) 
          <div class="row"> 
           <div class="small-4 columns"> 

            <div class="image-wrapper overlay-slide-in-left"> 

             @if(count($wardrobeAttire->wardrobeimages()->where('wardrobe_attire_view',0)->first()) === 0) 
              <img src="{{ domain_name() . '/f-assets/img/' . 'wardrobe_attire_default_image.png' }}" alt="Attire image" /> 
             @else 
              @if(count($wardrobeAttire->wardrobeimages()->where('wardrobe_attire_view',0)->get()) >= 1) 
               @foreach($wardrobeAttire->wardrobeimages()->where('wardrobe_attire_view',0)->get() as $wardrobeAttireImage) 
                <img src="{{ domain_name().'/ws-uploads/wardrobe-attire-image/thumbnail/'.$wardrobeAttireImage->new_name }}" alt="Attire image" /> 
               @endforeach 
              @endif 
             @endif 

             <div class="image-overlay-content"> 
              <h2>.overlay-slide-in-left</h2> 
              <p class="price">$2319.99</p> 
              <a href="#" class="button">Buy Me</a> 
             </div> 

            </div> 

           </div> 
          </div> 
         @endforeach 

而不是$ wardrobeAttires應該是@foreach循環內的$ wardrobeAttire,這是錯誤。

相關問題