我是laravel5的新人。 我使用"很多很多"根据给定标记获取所有消息的关系。
消息模型:
function tags(){
return $this->belongsToMany('App\tags')->withTimestamps();
}
TAGS MODEL:
public function messages() {
return $this->belongsToMany('App\messages', "messages_tags", "messages_id", "tags_id");
}
MY INPUT:
$tag = App\tags::where('name','public')->first();
($ tag:)
App\tags {#681
id: "5",
name: "Public",
created_at: "2016-02-10 13:51:36",
updated_at: "2016-02-10 08:21:36",
}
我尝试使用Tag获取消息。
$tag->messages()->get();
我的输出:
[]
但我收到了Tag" Public"。
的消息我的代码有什么问题?
答案 0 :(得分:2)
在Message
方法的tags()
模型中,您还应提供messages_tags
数据透视表名称(包括" messages_id"以及" tags_id&# 34;)并访问messages
你应该使用:
$tag->messages;
或者您可以使用(Eagre loading):
$tag = App\tags::with('messages')->where('name','public')->first();
然后使用:
$tag->messages;
答案 1 :(得分:0)
请参阅:https://laravel.com/docs/5.1/eloquent-relationships#many-to-many
您是否有与给定标签相关的消息?
$tag = App\tags::where('name','public')->first();
dd($tag->messages()->get());