Laravel Eloquent - получение данных из связанных моделей и применение объединения не работает - PullRequest
1 голос
/ 12 марта 2020

Столкнулся с действительно странной ошибкой и не может понять, почему это происходит. Пожалуйста, смотрите объяснение ниже, чтобы понять проблему!

Что у меня есть:

  • 3 модели: Ведро , Шаблон и DesignPack .
  • Ведро имеет отношение «многие ко многим (Polymorphi c)» с Template и DesignPack (это означает, что у нас есть сводная таблица сгибаемость ).
  • По сути Ведро может иметь (быть связанным с) оба: Шаблон и DesignPack .
  • Laravel 6 . *

Что я хочу сделать:

  • Я хочу объединить все модели Bucket Template и DesignPack (используя union) с указанием * Только 1107 * столбцов. Хочется, чтобы с нумерацией тоже было нумерация страниц, поскольку у нас может быть слишком много элементов:)

Что я сделал: Я попробовал несколько решений, но ни одно из них не получилось, те же ошибки. Ниже приведен пример того, что я пробовал:

    $templates = Bucket::find($bucket_id)->templates()->select('id', 'file_name as name', 'size', 'preview');
    $design_packs = Bucket::find($bucket_id)->dps()->select('id', 'name', 'size', 'preview');

    $bt_uploads = $templates->union($design_packs)->paginate(20);

    return UserUploadResource::collection($bt_uploads);

Ошибка, которую я постоянно получаю:

"SQLSTATE [21000]: Нарушение количества элементов: 1222 Используемые операторы SELECT имеют различное количество столбцов (SQL: выберите количество () как совокупность из ((выберите id, file_name как name, size, preview, templates. , bucketables. bucket_id как pivot_bucket_id, bucketables. bucketable_id как pivot_bucketable_id, bucketables. bucketable_type как pivot_bucketable_type из templates внутреннее соединение bucketables on templates. id = bucketables. bucketable_id, где bucketables. bucket_id = 3 и bucketables. bucketable_type = App \ Template, а templates. deleted_at равно нулю) объединение (выберите id, name, size, preview из design_packs внутреннее соединение bucketables в design_packs. id = bucketables. bucketable_id, где bucketables. bucket_id = 3 и bucketables. bucketable_type = App \ DesignPack и design_packs. deleted_at равно нулю)) как temp_table) "

Большое спасибо, ребята, за любую помощь и идеи !

...