Laravel - Изменить значение по умолчанию eloquent - PullRequest
2 голосов
/ 01 ноября 2019

Можно ли изменить ответ по умолчанию из 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];
  }
}

1 Ответ

3 голосов
/ 01 ноября 2019

Почти;вы можете изменить 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.

...