У меня есть набор моделей продуктов со следующими отношениями:
ЗаказатьПродукт -> АккаунтПродукт -> Продукт
Модель OrderProduct принадлежит AccountProduct и имеет отношение hasOneThrough
к продукту. Эти отношения работают нормально до тех пор, пока я не окажусь в ситуации, когда аккаунтПродукт и Продукт были обратимо удалены. Я все еще могу получить отношение через цепочку, но hasOneThrough
не работает в этом сценарии.
public function accountProduct(): BelongsTo
{
return $this->belongsTo(AccountProduct::class)
->withTrashed();
}
public function product(): HasOneThrough
{
return $this->hasOneThrough(
Product::class,
AccountProduct::class,
'id',
'id',
'account_product_id',
'product_id'
)->withTrashed();
}
Вывод:
echo $orderProduct->accountProduct->product->id
"1"
echo $orderProduct->product
"Trying to get property ID of a non object"
Есть ли изменение кода, которое я могу внести, чтобы заставить Eloquent возвращать отношение HasOneThrough, когда и accountProduct, и orderProduct мягко удаляются?