Laravel - красноречиво изменить значение по умолчанию

Можно ли изменить ответ значения по умолчанию от Laravel Eloquent?

У меня есть API, и в моей базе данных есть миграция payment. Мой платеж имеет целое число в столбце status.

$table->integer('status')->default(1);

Я хочу знать, можно ли изменить значение по умолчанию с помощью любой функции, чтобы изменить ответ Payment->get().

Например:

public static $status = [
    1 => "Waiting for payment",
    2 => "In review",
    3 => "Payed",    
];

И автоматически вызовите мою функцию:

class Payment extends Model
{
  // ...
  public getStatus() {
    $this->status = $status[$this->status];
  }
}

person Thiago Valente    schedule 01.11.2019    source источник


Ответы (1)


Почти; вы можете изменить getStatus() на getStatusAttribute(), который является аксессором Laravel, а затем просто вызвать:

$payment = Payment::first();
dd($payment->status);
// Or
$payments = Payment::get();
foreach($payments AS $payment){
  dd($payment->status);
}

Вместо вывода 1, 2 и т. д. значение будет заменено на 'Waiting for payment', 'In review' и т. д.

См. https://laravel.com/docs/6.x/eloquent-mutators#defining-an-accessor для получения полной информации.

person Tim Lewis    schedule 01.11.2019
comment
Мой вопрос был вашим первым ответом: /** * Get the payment status. * * @param int $value * @return void */ public function getStatusAttribute($value) { return Payment::$status[$value]; } - person Thiago Valente; 01.11.2019