2017-01-25 7 views
0

は、参照のためのスレッドです:Simple tags system in Laravel 5.2データはlaravel関係に+ 1ピボットテーブル2つのテーブルから来ていない

私がページに表示されるこれらのタグを作成することはできません。それはいつもここnullを返しています私が持っているソースです:

項目モデル

public function tags() { 

    return $this->belongsToMany('App\Tag', 'item_tag'); 
} 

Tagモデル

class Tag extends Model { 

    protected $table = 'tags'; 
    protected $primaryKey = 'id'; 

    protected $fillable = [ 
     'tag' 
    ]; 

    public function itemTags() { 

     return $this->belongsToMany('App\Item', 'item_tag'); 

    }  

} 

ItemController

public function show($id) 
{ 
    $item = Item::with('tags')->find($id); 
    return view('item', compact('item')); 
} 

とビュー

@foreach($item->tags() as $showTags)   
     {{ $showTags->tag }}     
@endforeach 

dd($item) 2つのタグが関連しているので、それらはコレクションにあると仮定しますが、返されるのはページ上の空白かnullです。

Item {#322 ▼ 
    #primaryKey: "id" 
    #table: "items" 
    #fillable: array:9 [▶] 
    #connection: null 
    #keyType: "int" 
    #perPage: 15 
    +incrementing: true 
    +timestamps: true 
    #attributes: array:25 [▶] 
    #original: array:25 [▶] 
    #relations: array:1 [▼ 
    "tags" => Collection {#332 ▼ 
     #items: array:2 [▼ 
     0 => Tag {#330 ▶} // tag 1 
     1 => Tag {#331 ▶} // tag 2 
     ] 
    } 
    ] 
    ... 
} 

問題が発生する可能性があります。あなたが関係、コレクションとしての利用可能を起動する必要はありません熱望してロードした後

+0

あなたTagモデルは、 'tag'という名前のプロパティを持っていますか? – Jerodev

+0

@Jerodev完全な 'Tag'モデル – VLS

答えて

1

// $item->tags not $item->tags() since its a collection 
@foreach($item->tags as $showTags)   
     {{ $showTags->tag }}     
@endforeach 

// if you don'nt eager load, then you can call the relationship 
@foreach($item->tags()->get() as $showTags) 
... 
+0

で質問を更新しました。これは何度も試してみましたが、私はいつも' foreach() 'の引数が無効です。名前を変更しましたモデルの関数を 'taggs'に変換し、' $ item-> taggs'で作業していません。このタグの中で特別なものはどれですか?それが問題の原因です。 – VLS

+0

@VLSいいえ、タグは予約済みのキーワードではありません。 2番目の方法を試しましたか?熱心な読み込みではありませんか? –

+0

はい、2番目の方法は正常に動作しています。 '$ item-> tags()'と '$ item-> tags'を表示すると'無効な引数... 'が表示されます。私は非常に奇妙です。 – VLS

関連する問題