Как использовать атрибут getter для использования в Query Builder - PullRequest
0 голосов
/ 31 мая 2018

Ниже описан мой геттер в моей Post модели:

public function getTicketIdAttribute() {
   return str_pad($this->id, 6, '0', STR_PAD_LEFT);
}

Обратите внимание, что функция просто добавляет 6 нулевых отступов перед Post post_id.

Теперь, возможно ли использовать его в построителе запросов?Я попробовал следующее:

Post::where(function($query) use ($keyword) {
   $query->where('detail', 'LIKE', '%'. $keyword .'%')
         ->orWhereHas($query->getTicketIdAttribute(), 'LIKE', '%'. $keyword .'%');
});

Я пытаюсь создать поисковую систему, которая ищет Post объект , если :

  1. $keyword соответствует Post detail

или

, если $keyword соответствует getTicketIdAttribute()

1 Ответ

0 голосов
/ 02 июня 2018

Как указал Йонас Штауденмейр Мне нужно переписать код, используя PHP LPAD(), поэтому:

LPAD(id, 6, '0')

и чтобы использовать его в Query Builder, мне нужно применить егоиспользуя метод DB::raw, так как не существует эквивалентного метода LPAD(), доступного прямо из коробки.Итак, используйте его следующим образом:

DB::raw("LPAD(id, 6, '0')")

Просто обратите внимание, что это означает, что для этого случая Атрибут getter Model не может использоваться напрямую в Query Builder, поэтому необходимо применить его следующим образом.

Надеюсь, что это поможет другим, и я благодарю Йонаса Штауденмейра за помощь.

...