Я изо всех сил пытаюсь выяснить, как проверить поле в модели A, которое должно быть уникальным в сочетании с полем из модели B.
Вот пример, чтобы прояснить мой вопрос:
Page hasMany SitesPage
SitesPage belongsTo Page, belongsTo Site
Страница имеет поле slug, которое должно быть уникальным для всего сайта. Страницы могут быть прикреплены к любому сайту.
Page.id
Page.slug
SitesPage.id
SitesPage.site_id
SitesPage.page_id
У меня есть собственный метод проверки checkUniqueSlug () в моей модели страницы, но я не могу проверить, что слаг уникален для сайта, так как site_id хранится в SitesPage, который недоступен в методе проверки модели страницы ($ this- > данные содержат только данные модели страницы).
Я не могу выполнить проверку в модели SitesPage, так как SitesPage не имеет поля слагов, и я не вижу, что пост страницы является SitesPage.
Как создать пользовательскую проверку, чтобы проверить, является ли слаг уникальным для сайта?
Одно из решений - переместить слаг в модель SitesPage, но нам нужно, чтобы все общие страницы имели одинаковый слаг. т. е. общая страница «О нас» должна содержать слаг «about_us» независимо от того, к какому сайту она прикреплена.
Другое решение состоит в том, чтобы выполнить проверку в контроллере перед сохранением, что сработало бы, но это неправильно, так как проверка должна выполняться в модели.