Могу ли я использовать мутаторы в Query?

Я создал мутатор в своей модели.

Class Client {
   protected $fillable = ['name', 'age']

   public function getIndustryAttribute() {
      // some evaluations;

      return "Programmer"
   }
}

Теперь я пытаюсь использовать Client::where('industry', "Programmer")->get() для получения значения. Это вообще возможно?

Пожалуйста, имейте в виду, что это полностью псевдокод для упрощения объяснения. Я оказался таким из-за неправильного планирования..


person senty    schedule 10.08.2018    source источник
comment
Вы не можете использовать для этого мутаторы Laravel, как указано в ответе @gbalduzzi, они оцениваются после запроса возвращаемых объектов Model. Однако есть способ, которым вы можете добиться этого, в зависимости от платформы вашей базы данных. MySQL предлагает что-то под названием Сгенерированные столбцы. это может быть решением для вас. Однако я не могу говорить ни о какой другой поддерживаемой базе данных. Конечно, все зависит от того, какая логика вам нужна, хотя это может быть неосуществимо.   -  person Jonathon    schedule 10.08.2018


Ответы (1)


Нет, ты не можешь этого сделать.

Мутаторы оцениваются после выполнения запроса.

Что вы можете сделать при запросе, так это определить правильные области действия.

Это невозможно, потому что применение мутатора при запросе было бы очень тяжелым с точки зрения производительности: это было бы эквивалентно перебору всей таблицы и выполнению уточнения для каждой строки.

person gbalduzzi    schedule 10.08.2018