У меня есть набор моделей продуктов со следующими отношениями:
OrderProduct -> AccountProduct -> Product
Модель OrderProduct принадлежит AccountProduct и имеет hasOneThrough
отношение к продукту. Эти отношения работают нормально, пока я не нахожусь в ситуации, когда учетная запись Product и Product были мягко удалены. Я все еще могу получить связь через цепочку, но 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, когда учетные записи ProductProduct и orderProduct были удалены программным способом?