Скажем, у меня есть две сущности в отношениях "многие ко многим":
posts
-id
-title
-body
tags
-id
-title
-sequence (int)
post_tag
-post_id
-tag_id
Я хочу получить те Сообщения, которые имеют теги споследнее sequence
значение 7
.Потерпите меня.Пример будет иметь больше смысла:
post_tag:
=========
-post_id: 1
-tag_id: 3
-post_id: 1
-tag_id: 4
tags:
=====
-id: 3
-sequence: 2
-id: 4
-sequence: 7
Post ID 1 should be returned
post_tag:
=========
-post_id: 2
-tag_id: 4
-post_id: 2
-tag_id: 5
tags:
=====
-id: 4
-sequence: 7
-id: 5
-sequence: 8
Post ID 2 should NOT be returned because it has a tag whose sequence exceeds 7.
post_tag:
=========
-post_id: 3
-tag_id: 2
-post_id: 3
-tag_id: 3
-post_id: 3
-tag_id: 4
tags:
=====
-id: 2
-sequence: 1
-id: 3
-sequence: 2
-id: 4
-sequence: 7
Post ID 3 should be returned
Вот что я пробовал до сих пор:
$posts = Post::whereHas('tags', function($q){ $q->where('sequence', 7);})->get();
Но он возвращает дажете посты, чья последовательность выше 7. И я не жалуюсь.Я знаю, почему он возвращает сообщения с тегами, чья последовательность больше 7. Я просто не знаю, как это решить.
Подсказка: С точки зрения запроса проблему можно представить так:
Не более X и X включительно