Это проблема:
Как добавить условие как ограничение или смещение в запрос до того, как было выполнено условие объединения?
Вот что я попробовал:
$query = DB::table('table_name');
$query->where(condition);
$query->orWhere(condition);
$query_no_union_yet = $query->select(field list);
$query->union(another_table);
$result_without_limit = $query->get();
$query_with_limit = $query_no_union_yet->limit(10);
$query_with_limit->union(another_table);
$result_with_limit = $query_with_limit->get();
Реальный код очень длинный и сложный, но это ситуация.
Когда доберетесь до ряда $query_with_limit->union(another_table);
Я добавляю союз к тому, что я сделал раньше, и это не то, что я хочу. Я должен иметь возможность добавлять лимит на первый запрос только после того, как он дал мне результаты, и таким образом получить 2 набора результатов.
Возможно, есть идеи?
Вы могли бы клонировать объект Таким образом, у вас есть два построителя запросов, которые являются двумя отдельными экземплярами.
$query_no_union_yet = (clone) $query->select(field list);
Других решений пока нет …