#mysql #laravel
Вопрос:
У меня есть недавно созданная колонка
$query-gt;select([ "table1.*", DB::raw(" CASE WHEN table2.updated_at gt;= table1.updated_at THEN table2.updated_at ELSE table1.updated_at END as last_update ") ]);
Теперь я хочу найти таблицу, в которой last_update находится между » с » и «до», мое текущее решение:
$query-gt;where(function ($query) { $query-gt;where("table1.updated_at", 'gt;=', $this-gt;since); $query-gt;orWhere("table2.updated_at", 'gt;=', $this-gt;since); });
$query-gt;where(function ($query) { $query-gt;where("table1.updated_at", 'gt;=', $this-gt;till); $query-gt;orWhere("table2.updated_at", 'gt;=', $this-gt;till); });
Как я могу использовать столбец «last_update» или использовать столбец «где на» с более новым значением update_at?
Ответ №1:
$query-gt;having("last_update", 'gt;=', $this-gt;since)
Решив мою проблему.
Ответ №2:
вы можете запросить table1
и присоединиться table2
, и в обеих таблицах вы можете вызвать предложение where:
Table1::with(['table2' =gt; function ($query) { $query-gt;where('updated_at', 'gt;=', $this-gt;since); }]) -gt;where('updated_at', 'gt;=', $this-gt;since) -gt;get();