以下是供参考的帖子:Simple tags system in Laravel 5.2
我无法在页面上显示这些标签。它总是返回public function tags() {
return $this->belongsToMany('App\Tag', 'item_tag');
}
这里是我的来源:
项目模型
class Tag extends Model {
protected $table = 'tags';
protected $primaryKey = 'id';
protected $fillable = [
'tag'
];
public function itemTags() {
return $this->belongsToMany('App\Item', 'item_tag');
}
}
标记模型
public function show($id)
{
$item = Item::with('tags')->find($id);
return view('item', compact('item'));
}
ItemController
@foreach($item->tags() as $showTags)
{{ $showTags->tag }}
@endforeach
视图
dd($item)
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
]
}
]
...
}
。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/*">
<xsl:copy-of select="*"/>
</xsl:template>
</xsl:stylesheet>
请说明可能出现的问题。
答案 0 :(得分: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)
...