Красноречивый полиморфный союз 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))
как я могу исправить эту проблему?