Красноречивый полиморфный союз hasManyThrough выбрасывает нарушение мощности: 1222

Структура таблиц:

Ресторан:

id
title
description
etc....

Скидка:

id
restaurant_id
date
percent

Специальная скидка:

id
restaurant_id
from
to
percent

Бронирование:

id
user_id
discount_id
discount_type
reserved_at

Модели:

class Reservation extends Model{
    public function discount()
    {
        return $this->morphTo();
    }
}

и у меня есть два вида скидок:

class Discount extends Model
{
    public function reservations()
    {
        return $this->morphMany(Reservation::class, 'discount');
    }
}

и SpecialDiscount:

class SpecialDiscount extends Model
{
   public function reservations()
    {
        return $this->morphMany(Reservation::class, 'discount');
    }
}

а также SpecialDiscount а также Discount принадлежат к Restaurant

теперь я пытаюсь получить доступ к Restaurant Reservations через скидки:

в Restaurant модель:

  public function reservations()
  {
      $relation = $this
          ->hasManyThrough(Reservation::class, Discount::class, 'restaurant_id', 'discount_id')
          ->where('discount_type', Discount::class)->getBaseQuery();

      $relation->union($this->hasManyThrough(Reservation::class, SpecialDiscount::class, 'restaurant_id', 'discount_id')
          ->where('discount_type', SpecialDiscount::class)
          ->getBaseQuery()
          ->select('reservations.*')
      );

      return $relation;
  }

так что это ошибки:

SQLSTATE[21000]: Нарушение количества элементов: 1222 Используемые операторы SELECT имеют другое количество столбцов (SQL: (выберите * из reservations внутреннее соединение discounts на discounts.id знак равно reservations.discount_id где discounts.deleted_at равно нулю и discount_type = App\Models\Discount) union (выберите reservations.* из reservations внутреннее соединение special_discounts на special_discounts.id знак равно reservations.discount_id где discount_type = Приложение \ Модели \SpecialDiscount))

как я могу исправить эту проблему?

0 ответов

Другие вопросы по тегам