我是laravel5的新手 . 我使用“多对多”关系来获取基于给定标记的所有消息 .
消息模型:
function tags(){
return $this->belongsToMany('App\tags')->withTimestamps();
}
标签模型:
public function messages() {
return $this->belongsToMany('App\messages', "messages_tags", "messages_id", "tags_id");
}
我的输入:
$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->messages()->get();
我的输出:
[]
但我有标签“公共”的消息 .
我的代码有什么问题?
2 回答
在
tags()
方法的Message
模型中,您还应提供messages_tags
透视表名称(包括"messages_id"和"tags_id")并访问messages
,您应该使用:或者您可以使用(Eagre loading):
然后使用:
参考:https://laravel.com/docs/5.1/eloquent-relationships#many-to-many
你有任何与给定标签相关的消息吗?