2017-05-10 5 views
0

laravelを使用してシンプルなCMSを作成しました.1つのカテゴリページ内に投稿を取得しようとしました。$ category-> posts()カテゴリモデルで割り当てられましたが、そして、私はカテゴリ投稿を取得するときのエラー

カテゴリーモデル enter image description here

そして、ここでは私のコードで、次のエラーを取得

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Category extends Model 
{ 
    protected $table = 'categories'; 

    public function posts() 
    { 
     return $this->belongsToMany('App\Posts')->withTimestamps(); 
    } 
} 

ポストモデルは

 <?php 

    namespace App; 

    use Illuminate\Database\Eloquent\Model; 

    class Post extends Model 
    { 
     public function categories() 
     { 
      return $this->belongsToMany('App\Category')->withTimestamps(); 
     } 

     public function user() 
     { 
      return $this->belongsTo('App\User'); 
     } 

     public function meta() 
     { 
      return $this->hasMany('App\Postmeta'); 
     } 
    } 

**Category Controller** 
<?php 

namespace App\Http\Controllers\Frontend; 

use Illuminate\Http\Request; 
use App\Http\Controllers\Controller; 
use App\Category; 

class CategoriesController extends Controller 
{ 
    /** 
    * Display a listing of the resource. 
    * 
    * @return \Illuminate\Http\Response 
    */ 
    public function getIndex() 
    { 
     return view('frontend.categories.index')->withCategories(Category::orderBy('id', 'desc')->paginate(6)); 
    } 

    /** 
    * Display the specified resource. 
    * 
    * @param int $slug 
    * @return \Illuminate\Http\Response 
    */ 
    public function getSingle($slug) 
    { 
     $category = Category::where('slug', '=', $slug)->first(); 
     $posts  = ($category !== null) ? $category->posts() : array(); 

     return view('frontend.categories.single')->withCategory($category)->withPosts($posts); 
    } 
} 
+0

あなたは単にスペルミスを犯してきました。あなたのモデル名は「Post」ですが、あなたのカテゴリでは「Posts」でそれにアクセスしようとしています – DestinatioN

答えて

1

私はあなたがタイプミスをしたと思います。

Postの代わりにPostsを入力します。

$this->belongsToMany('App\Post')

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Category extends Model 
{ 
    protected $table = 'categories'; 

    public function posts() 
    { 
     return $this->belongsToMany('App\Post')->withTimestamps(); 
    } 
} 
+0

OMGこれはそれでした:D私はlaravel plusエラーに慣れていないので、私が思う問題を見つけるために狂っていました -/ –

+0

@YasserMoussaあなたは正常なideが必要な場合、通常のideは即座に投稿が未定義であり、秒単位でそれを発見したことを伝えます –

+0

私はnotepadd ++を使用しているため、@AmirBarに同意します。 –

関連する問題