2016-09-28 4 views
0

Ich versuche, ein einfaches Blog mit Laravel 5.3 zu tun. Index Seite Seite beiseite mit Kategorien und Tags, und wir können verschiedene Beiträge mit Kategorien oder Tags Namen filtern.Versuch, Eigentum von Nicht-Objekt in beiseite zu bekommen

In Routen habe ich das.

Route::get('categories/{name}',[ 
    'as'=>'front.search.category', 
    'uses'=>'[email protected]' 
]); 

Route::get('tags/{name}',[ 
    'as'=>'front.search.tag', 
    'uses'=>'[email protected]' 
]); 

In Artikel

public function scopeSearchCategory($query,$name){ 
    $query->where('name','=',$name); 
} 

In Tag

public function scopeSearchTag($query,$name){ 
    $query->where('name','=',$name); 
} 

In Frontcontroller.

public function searchCategory($name){ 
    $tags=Tag::all(); 
    $sliders=Slider::all(); 
    $categories = Category::SearchCategory($name)->first(); 
    $articles = $categories->articles()->paginate(5);  
    $articles->each(function($articles){ 
     $articles->category; 
     $articles->images; 
    }); 
    return view('front.index')->with('articles', $articles)->with('sliders', $sliders)->with('categories', $categories)->with('tags',$tags); 
    } 

    public function searchTag($name){ 
    $categories=Category::all(); 
    $sliders=Slider::all(); 
    $tags = Tag::SearchTag($name)->first(); 
    $articles = $tags->articles()->paginate(5); 
    $articles->each(function($articles){ 
     $articles->category; 
     $articles->images; 
    }); 
    return view('front.index')->with('articles', $articles)->with('sliders', $sliders)->with('categories', $categories)->with('tags',$tags); 
    } 

In beiseite

<aside class="panel panel-primary"> 
    <div class="panel-heading"> 
     <h2 class="panel-title">{{trans('app.title_categories')}}</h2> 
    </div> 
    <div class="panel-body"> 
     <ul class="list-group"> 
     @foreach($categories as $category) 
      <a href="{{route('front.search.category',$category->name)}}"> 
      <li class="list-group-item"> 
       <span class="badge">{{$category->articles->count()}}</span> 
       {{$category->name}} 
      </li> 
      </a> 
     @endforeach 
     </ul> 
    </div> 
</aside> 
    <aside class="panel panel-success"> 
    <div class="panel-heading"> 
     <h2 class="panel-title">Tags</h2> 
    </div> 
    <div class="panel-body"> 
     <ul class="list-group"> 
      @foreach($tags as $tag) 
      <a href="{{route('front.search.tag',$tag->name)}}"> 
       <li class="list-group-item"> 
       <span class="badge">{{$tag->articles->count()}}</span> 
        {{$tag->name}} 
       </li> 
      </a> 
      @endforeach 
     </ul> 
    </div> 
</aside> 

Wenn ein Klick auf beiseite href-Tags oder Kategorien zu filtern zurückzukehren 'Den Versuch, Eigentum von Nicht-Objekt zu erhalten.' Wenn ich scopeSearchs entferne und in FrontController-Funktionen $ Tag: all() oder Category: all() einfügt href funktioniert, aber Filter fehlschlagen, alle Post zurückgeben. ¿Irgendeine Idee warum diesen Fehler zurückgeben? Kann man nicht foreach wenn man ein Objekt zurückgibt?

+0

Ich denke, das ist nicht der Fehler, wenn ich Alles beiseite löschen und zum Beispiel http: // localhost: 8000/categories/c (eine der Kategorien) schreiben. Aber wenn beiseite, wenn ich in hREF Rücksprung Fehler klicken. –

+0

Ich bin sicher, dass Sie etwas wie "foo" -> bar oder $ x-> foo tun, wo $ x null ist. Ich kann es hier nicht verstehen, aber versuchen Sie Var_dumping Ihre Variablen und Sie werden es finden. (Um es zu testen, gehen Sie zu php artisan tinker und schreiben "foo" -> bar oder $ x = null; $ x-> foo;) –

+0

Ich benutze dd ($ articles) in FrontController und gebe Werte korrekt zurück. –

Antwort

0

sollten Sie verwenden

$tags = Tag::searchTag($name)->first(); 

Wenn Sie Scope-Funktion verwenden, sollten sie immer

so searchTag() Camelcase sollte mit kleinen s nicht Kapital s

Sie sollten entfernen foreach beginnen werden Verwenden Sie diese

<a href="{{route('front.search.tag',$tags->name)}}"> 
      <li class="list-group-item"> 
      <span class="badge">{{$tags->articles->count()}}</span> 
       {{$tags->name}} 
      </li> 
</a> 
+0

Ich ändere das und gebe denselben Fehler zurück. ¿Vielleicht beiseite foreach scheitern? –

+0

Ja, das ist das Problem Ich thnk – Vikash

+0

Wenn ich foreach return Undefined Eigenschaft entfernen: Illuminate \ Database \ Eloquent \ Collection :: $ name –

Verwandte Themen