Nano Hash - криптовалюты, майнинг, программирование

Laravel множественная проблема ограничения отношения hasmany

У меня есть 3 страницы коллекции, посты, комментарии и отношение

страницы => hasmany => сообщения => hasmany => комментарии

отношение моделей страниц

public function posts()
{
    return $this->hasMany('App\Models\PostsModel', 'page_id');
}

отношение моделей записей

public function comments()
{
    return $this->hasMany('App\Models\CommentsModel', 'post_id')->limit(10);
}

Запрос

PagesModel::with('posts.comments')->get();

предполагается, что он принимает все сообщения страницы и 10 комментариев для каждого сообщения, но пропускает результаты. Многие сообщения имеют несколько комментариев, но не могут получить комментарии.

Любое решение или лучший подход. Спасибо


  • Это нормально для меня. Разве что ваши комментарии удаляются 12.10.2018

Ответы:


1

В Laravel нет встроенной поддержки для этого.

Я создал для него пакет: https://github.com/staudenmeir/eloquent-eager-limit

Используйте трейт HasEagerLimit как в родительской, так и в связанной модели.

class PostsModel extends Model {
    use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
}

class CommentsModel extends Model {
    use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
}

Затем вы можете применить ->limit(10) к своим отношениям.

28.10.2018

2

Это общий вопрос, на который нет простого ответа. Прочитайте https://softonsofa.com/tweaking-eloquent-relations-how-to-get-n-related-models-per-parent/ для объяснения

12.10.2018
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..