2017-02-18 15 views
0

こんにちは私はlaravelトレーニングプロジェクトに取り組んでいます。私はモデルや関係に問題があります。それぞれの商品カテゴリ名を取得しようとしています。ここで
は私のプロダクトモデルlaravelのカテゴリの関係未定義のプロパティ:stdClass ::

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Product extends Model 
{ 
    public function category() 
    { 
    return $this->belongsTo('App\Category'); 
    } 
} 

と私のカテゴリーモデルです

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

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

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

私が実行している間、この

 @foreach($products as $product) 
     <tr> 
     <td>{{ $product->id }}</td> 
     <td>{{ $product->name }}</td> 
     <td>{{ $product->category->name }}</td> 
     </tr> 
     @endforeach 

などの各製品のカテゴリ名を取得しようとすると、このエラーが表示されるページ

Undefined property: stdClass::$category (View: /var/www/html/projectname/resources/views/my/products/index.blade.php) 

誰でもこのエラーの原因を教えていただけますか?ここで更新

は、テーブル構造に
製品です:ID、名前、category_id->符号なし()
カテゴリー:ID、名前を
、ここでは、私は$の製品を取得するために使用するコードです

$user_id = Auth::user()->id; 
    $products = DB::table('products')->where('user_id', $user_id)->paginate(5); 
    return view('my.products.index')->withProducts($products); 
+0

プロダクトとカテゴリのテーブル構造を表示します。間違った外部キーの問題かもしれません。 –

+0

@OdinThunder私はポストを更新しました。 –

+0

エラーメッセージは、 '$ product'が' Product'モデルのインスタンスではなく、オブジェクト/ stdClassであることを示唆しています。あなたは '$ products'変数を取得するために使用したコードを投稿できますか? – Jonathon

答えて

2

あなたの問題は、Eloquentの代わりにLaravelのクエリビルダーを使用していますが、Eloquentのように結果を扱っていることです。

あなたは:

$products = DB::table('products')->where('user_id', $user_id)->paginate(5); 

$products変数がstdClassのインスタンスとしてあなたの項目が含まれているPaginatorインスタンスを、含まれています。あなたは雄弁でこれを行うことができるようにしたい場合は、このような何か試してみてください:この項目はページネータで返さことを保証します

$products = Product::with('category')->where('user_id', $user_id)->paginate(5); 

をロードされた熱心なcategory関係で、あなたのProduct雄弁モデルのインスタンスであります(つまり、Productごとに1つずつ、5つのクエリではなく1つのクエリを使用して返されるProductのカテゴリ関係をロードします)。

$product->category->nameにアクセスする必要があります。

+0

ありがとう、あなたは天才です。私はそのようなミスをしたとは信じられません。 –

+0

ようこそ。あなたを助けてくれてうれしいよ:] – Jonathon

関連する問題