Ларавель 5 | Отношение многие ко многим не работает

Я новичок в 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();

($тег :)

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

МОЙ ВЫВОД:

 []

Но у меня есть сообщения с тегом "Общедоступные".

Что не так с моим кодом?


person Shankar Thiyagaraajan    schedule 10.02.2016    source источник
comment
попробуйте dd($tag-›message), затем, если вы видите результат, введите $tag-›message-›get()   -  person SarangaR    schedule 10.02.2016
comment
Это также возвращает []   -  person Shankar Thiyagaraajan    schedule 10.02.2016
comment
Вы можете указать структуру таблицы?   -  person SarangaR    schedule 10.02.2016


Ответы (2)


В вашей модели Message в методе tags() вы также должны указать имя сводной таблицы messages_tags (включая «messages_id» и «tags_id»), а для доступа к messages вы должны использовать:

$tag->messages;

Или вы можете использовать (загрузка Eagre):

$tag = App\tags::with('messages')->where('name','public')->first();

Затем используйте:

$tag->messages;
person The Alpha    schedule 10.02.2016
comment
Большое спасибо Q... Работает...! - person Shankar Thiyagaraajan; 10.02.2016

См.: https://laravel.com/docs/5.1/eloquent-relationships#many-to-many

У вас есть сообщение, связанное с данным тегом?

$tag = App\tags::where('name','public')->first();
dd($tag->messages()->get());
person Rafał Łyczkowski    schedule 10.02.2016
comment
Пожалуйста, пометьте запись и соответствующую запись сообщения, просто выберите dd по идентификатору - person Rafał Łyczkowski; 10.02.2016