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

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

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

   public function getIndustryAttribute() {
      // some evaluations;

      return "Programmer"
   }
}

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

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

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

Jonathon 10.08.2018 17:51
1
1
1 246
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

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

Другие вопросы по теме