Laravel Eloquent: Должен ли я добавлять значения из модели или контроллера? - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть модель с id, name и cost.

protected $table = 'has_costs';
protected $fillable = [
    'id','name','cost'
];

Затем я также использовал append для добавления новых столбцов cost_under и cost_over, которые в основномделает простой расчет из стоимости.

protected $appends = ['cost_over','cost_under'];

Должен ли я сделать расчет в модели следующим образом:

public function getCostOverAttribute()
{
    $costOver = (20/100)*cost;
    return $this->attributes['over'] = $costOver;
}

public function getCostUnderAttribute()
{
    $costUnder = (80/100)*cost;
    return $this->attributes['under'] = $costUndr;
}

Или я все еще должен сделать это в контроллере, чтобы сохранить его больше "MVC"?

Фактический код более сложный, чем этот пример, и требуется много времени, чтобы подумать о том, как добавить каждое значение глубоко в сложные запросы Eloquent with.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Имеет смысл добавить cost_over и cost_under в качестве свойств модели.

public function getCostOverAttribute()
{
    return 20 / 100 * $this->cost;
}

public function getCostUnderAttribute()
{
    return 80 / 100 * $this->cost;
}

Вы можете получить к ним доступ $model->cost_over и $model->cost_under.

Содержать контроллер в чистотеиз внутренних расчетов модели над ее данными.

Также, если вы не хотите добавлять эти свойства каждый раз, когда создаете экземпляр модели, вы можете добавить атрибуты на пути как $model->append('cost_over') в вашем контроллере.

0 голосов
/ 22 февраля 2019

Ответ прост.

Сохраните их в своей модели, потому что если вы все сделаете правильно:

  • Затем вы сможете использовать их в своих красноречивых запросах
  • Вы можете использовать $model->costUnder
  • Контроллеры больше похожи на «менеджеров ресурсов», чем на «дескрипторы моделей», если вы понимаете, о чем я.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...