Итак, у меня есть class Order extends Model
.
Я создал Accessor с именем requiresApproval
, который возвращает true
или false
.
public function getRequiresApprovalAttribute(): bool
{
if ($some_physical_column_from_db === 'does not matter') {
return true;
}
return false;
}
Когда у меня есть Order
модель и я звоню $order->requiresApproval
Я получаю свое логическое значение. Все отлично работает.
Однако мне нужно, чтобы этот аксессор появился в списке атрибутов, потому что я хочу использовать его в своем классе репозитория в условии where
в запросе.
Итак, основываясь на официальной документации, я добавил:
protected $appends = [
'requires_approval',
];
, но когда я dd()
моего ордера, этот атрибут отсутствует в списке атрибутов (хотя свойство $ appends указывает, что средство доступа есть).
Короче говоря:
Когда в моем хранилище я звоню:
public function getOrdersEligibleToBeSendToOptions(): Collection
{
$columns = [
'*',
];
return $this->model
->where('status_uuid', '<>', OrderStatusesInterface::STATUS_COMPLETED)
->where('requiresApproval', '=', true) // this fails
// ->where('requires_approval', '=', true) // this fails as well
->get($columns);
}
Я получаю:
Что я делаю не так?Как я могу использовать свой аксессор в классе репозитория?