Я сталкиваюсь с проблемами в полиморфном отношении, где я не могу сделать, где надо работать. В основном у меня есть условие «где», которое я хочу применить.
Код отношения работает нормально, чтобы вернуть связанные модели, но он возвращает ошибки после применения whereHas.
Ниже приведен код
Класс заказов:
class Order extends Model
{
// function to return orders
public static function getAllOrders()
{
return $orders = Order::with('part.pcategory')->whereHas('part', function ($query)
{
$query->where('cat_id',4);
})->get();
}
// the relation
public function part()
{
return $this->morphTo(null,'department_short_code','part_stock_number','stock_number', 'dep_short_code');
}
}
Класс запасных частей SFD:
class sfd_part extends Model
{
public function orders()
{
return $this->morphMany('App\Order','part','department_short_code','part_stock_number');
}
public function pcategory()
{
return $this->belongsTo('App\Pcategories','cat_id', 'category_id');
}
}
Когда я вызываю getAllOrders (), это выдает ошибку ниже
SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец 'cat_id' в 'предложении где' (SQL: выбрать количество (*) в качестве совокупности из orders
, где существует (выберите * из orders
как laravel_reserved_0
) где laravel_reserved_0
. id
= laravel_reserved_0
. part_stock_number
и cat_id
= 2 и laravel_reserved_0
. id
= laravel_reserved_0
. part_stock_number
и cat_id
= 2))
Структура таблиц базы данных
Данные, которые я пытаюсь получить, представляют собой список заказов, связанных с каждой частью. Затем я получаю название категории, которая связана с этой частью. Также я хочу отфильтровать этот список, используя whereHas, где я получаю, например, все заказы, которые пришли для определенной категории.
Таблица заказов содержит заказы, связанные с деталью. эта часть может быть в любой из 3 таблиц, поэтому я использовал Полиморфное отношение, передавая два ключа Department_short_code и part_stock_number