Задать вопрос
New_Horizons
@New_Horizons
Бред:

Как создать запрос insert into ... select ... on duplicate key update ... через Laravel Query Builder?

Есть запрос, примерно такого вида (на самом деле он сложней, куча условий where и join в селекте):
insert into offers (sku, name, availability, price)
select concat(cast(products.id as char), 'ff'),
       products.name,
       products.availability,
       products.price
from products
where products.quantity > 0 &&
      products.price > 1000
on duplicate key update name         = value(name),
                        availability = value(availability),
                        price        = value(price);


Как написать его через Laravel Query Builder?

Для insert into ... on duplicate key update есть метод upsert
Для insert into ... select есть метод insertUsing (нет в документации вроде как).

Но мне надо это как-то совместить
  • Вопрос задан
  • 278 просмотров
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
New_Horizons
@New_Horizons Автор вопроса
Бред:
Пока решил это написанием своей функции для билдера:
Builder::macro('upsertUsing', function (array $columns, \Closure $query, array $update = null) {
	...
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы