ZetIndex_Ram
@ZetIndex_Ram

Можно ли определить функцию в свойстве table у Model Laravel?

Коллеги, выручайте. У меня в БД (БД построена на отдельной схеме, не привязанной к миграциям) есть функция lst_books_hist(?) (который мы передёшь айдишник и он возвращает строчку из таблицы устаревших книг)

class BooksListHist extends Model
{
    protected $connection = 'db_main';
    protected $table = 'lst_books_hist(?)'; --> могу ли я вот так сделать?
}


Как тогда мне построить запрос, передав туда айдишник? Используя AddBinding? Как мне в данном случае работать с моделью BooksListHist ?
BooksListHist::addBinding("id_book", "select")->select() ? Но в данном случае это не работает
  • Вопрос задан
  • 142 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
Не думаю, что удастся это реализовать в виде модели.
Сделайте репозиторий, который будет реализовывать логику запросов и DTO, который будет держать значения полей строки таблицы.

Впрочем, можете попробовать вот такое:
(new BooksListHist)
    ->setTable("lst_books_hist({$IdFilter['value']})")
    ->first();

Вы можете даже переопределить у модели метод getTable() и там дёргать параметры запроса.
Но, имхо, это всё кривые костыли и лучше сделать репозиторий, в котором будет чётко указано что можно делать, а чего нельзя с этими данными.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы