0 レビュー
2 回答
php-Laravel多対多の関係
3つのテーブルがあります
- アイテム(多くのタグに属する)
- タグ(多くのアイテムに属する)
- Item_Tag(item_idとtag_idを含む)
ORMを使用してアイテムからタグを取得しようとしています
$itemTags = Item::find($itemID)->tags;
は
を返しますobject(Illuminate\Database\Eloquent\Collection)#203 (1) { ["items":protected]=> array(0) { } }
追加した場合()
$itemTags = Item::find($itemID)->tags();
長いページが表示されます。
このアイテムに関連するタグを取得するにはどうすればよいですか?
モデルタグ
<?php class Tag extends Eloquent { protected $fillable = array('tag'); public function item() { return $this->belongsToMany('Item'); } }
モデルアイテム
<?php class Item extends Eloquent { protected $fillable = array('title', 'price','user_id'); public function tags() { return $this->belongsToMany('Tag'); } }
わからない
0
レビュー
答え :
解決策:
「長いページのコンテンツ」は単なるリレーショナルオブジェクトです。あなたはそれを必要としません。
$itemTags = Item::find($itemID)->tags;
で十分です
それがobject(Illuminate\Database\Eloquent\Collection)#203 (1) { ["items":protected]=> array(0) { } }
を返す場合、それは単に0個のオブジェクトのEloquentコレクションがあることを意味します。言い換えれば、関係は正常に機能し、タグは(まだ)ありません。
わからない
0
レビュー
答え :
解決策:
最初に関係データを熱心に読み込む必要があると思います。
$item = Item::with('tags')->find($itemID);
$tags = $item->tags;
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。