Laravel 5 |多对多关系不起作用

时间:2016-02-10 09:29:24

标签: php laravel many-to-many laravel-5.2

我是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"。

的消息

我的代码有什么问题?

2 个答案:

答案 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());