Возвращаемое значение должно иметь тип Illuminate\Database\Eloquent\Relations\HasMany, возвращается Illuminate\Database\Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Возвращаемое значение должно иметь тип Illuminate\Database\Eloquent\Relations\HasMany, возвращается Illuminate\Database\

Сообщение Anonymous »

У меня был метод:

Код: Выделить всё

public function getAllVariants(): HasMany
{
return $this->hasMany(ProductVariant::class, 'product_id', 'id')->with(['product', 'attribute_values', 'image', 'description']);
}
Я попробовал изменить его:

Код: Выделить всё

public function getAllVariants(): HasMany
{
$allVariants = $this->hasMany(ProductVariant::class, 'product_id', 'id')->with(['product', 'attribute_values', 'image', 'description']);

if ($allVariants->count() === 0) {

$variantByCode = ProductVariant::where('code', $this->code)->first();

if (!$variantByCode) {

$variants = $this->hasMany(ProductVariant::class, 'product_id', 'id')->where('id', '=', 0);
}

// Retrieve variants related to the product
$allVariants = ProductVariant::where('product_id', $variantByCode->product_id)
->with(['product', 'attribute_values', 'image', 'description']);
}

return $allVariants;
}
Эта модификация необходима для связи вариантов товара между собой. Для этого я изменил запрос product_id. И я начал получать сообщение об ошибке:

Возвращаемое значение Blockquote должно иметь тип Illuminate\Database\Eloquent\Relations\HasMany, возвращается Illuminate\Database\Eloquent\Builder

Также хочу отметить, что в дальнейшем этот код будет использоваться как:

Код: Выделить всё

$variants = $this->getAllVariants
->each(fn(ProductVariant $variant) => $variant->setRelation('product', $this))
->sortBy('position');
Как исправить ошибку?

Подробнее здесь: https://stackoverflow.com/questions/787 ... asmany-ill
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»