sql >> Databáze >  >> RDS >> PostgreSQL

Aktualizace limitu jednoho řádku Laravel 5 nefunguje

Na rozdíl od Oracle nebo MySQL aktualizovat výpisy pomocí LIMIT přímo na příkazy k aktualizaci PostgreSQL není možné. Takže zřetězení limit(1) metoda k instanci Query Builder nedělá nic, protože compileUpdate metoda z Laravelova PostgresGrammar třída, která je zodpovědná za kompilaci dotazu, kompiluje pouze příkazy where.

Můžete to však překonat tím, že budete mít podmínku, která používá poddotaz, který vrací pouze jeden řádek, který bude aktualizován. Něco takového by mělo fungovat:

DB::table("records")->whereIn('id', function ($query) use ($date_now) {
    $query->from('records')
          ->select('id')
          ->where('need_moderate', '=', 'no')
          ->where('locked_per_time', '<', $date_now->format("Y-m-d H:i:s"))
          ->limit(1);
})->update(["locked_per_time" => $locked_per->format("Y-m-d H:i:s"), 'locked_by' => $mdkey]);

whereIn('id', ...) podmínka předpokládá, že vaše tabulka má sloupec s názvem id který lze použít jako jedinečný identifikátor, aby mohl najít první řádek, který odpovídá vašim podmínkám v poddotazu.




  1. Seznam všech tabulek v postgresql information_schema

  2. Regulární výraz v klauzuli LIKE PostgreSQL

  3. získat datum všech sobot v daném roce - sql server

  4. Použití net/ssh/gateway k vytvoření ssh tunelu do mysql