У меня есть база данных, в которой я храню документы - некоторые независимы друг от друга, но некоторые являются просто «следующей версией» предыдущего документа. В этом случае я сохраняю идентификатор последней версии в столбце.
Пример набора данных будет выглядеть следующим образом:
id | name | version | validated | latest_version_id
1 | 'Doc 1' | 1 | true | null
2 | 'Doc 2' | 1 | true | null
3 | 'Doc 3 v1' | 1 | true | 5
4 | 'Doc 3 v2' | 2 | true | 5
5 | 'Doc 3 v3' | 3 | false | 5
Я хотел бы иметь возможность выбрать все проверенные документы в их последней версии. Обычно это запрос, который возвращает строки 1, 2 и 4. в наборе данных.
Я надеялся получить что-то вроде Docs::where('validated', true)->distinct('latest_version_id')->get()
, но, очевидно, это не так просто, как это ..
Любойзапрос гуру, чтобы указать мне в правильном направлении? Решением было бы получить все результаты, а затем отфильтровать некоторые модели, но это не очень оптимизировано.