Vrátí že pokud produkty jen pokud splňuje podmínku

jAkErCZ
Člen | 321
+
0
-

Zdravím,
potřebuji udělat SQL které bude splňovat že pokud oldPrice je větší než Price tak se ten produkt vrátí.

Mé řešení:

$products = $this->database->table(self::TABLE_NAME)
         ->where('NOT ' . self::TABLE_NAME . '.' . self::COLUMN_HIDDEN);
$products->where(self::COLUMN_PRICE_OLD > self::COLUMN_PRICE );

Ale nevrací to nic i když by mělo…

Kde dělám chybu?

Díky

David Matějka
Moderator | 6445
+
0
-

koukni se poradne, jak vytvaris ten where. mozna ti pomuze nakouknout, jak vypada vygenerovany dotaz. je tam videt chyba na prvni pohled

GEpic
Člen | 562
+
+4
-

Co by tohle mělo dělat?

	->where('NOT ' . self::TABLE_NAME . '.' . self::COLUMN_HIDDEN);

Nechtěl bys spíš toto (jestli máš ve sloupečku hidden hodnoty 0 / 1)?

->where(self::COLUMN_HIDDEN, 0);

A to druhé by mělo být nejspíš takto, protože jinak se ti ty 2 konstanty porovnají a vrátí buď true nebo false, ty potřebuješ vytvořit string.

	->where(self::COLUMN_PRICE_OLD . " > " . self::COLUMN_PRICE);

Editoval GEpic (17. 5. 2018 16:36)

jAkErCZ
Člen | 321
+
0
-

GEpic napsal(a):

Co by tohle mělo dělat?

	->where('NOT ' . self::TABLE_NAME . '.' . self::COLUMN_HIDDEN);

Nechtěl bys spíš toto (jestli máš ve sloupečku hidden hodnoty 0 / 1)?

->where(self::COLUMN_HIDDEN, 0);

A to druhé by mělo být nejspíš takto, protože jinak se ti ty 2 konstanty porovnají a vrátí buď true nebo false, ty potřebuješ vytvořit string.

	->where(self::COLUMN_PRICE_OLD . " > " . self::COLUMN_PRICE);

Super přesně tohle jsem myslel ale mám takový dotaz jelikož k tomu sem nenašel nic… je nějak možnost udělat že pokud je cena rozdílná tak vrátí produkt ( S čím si mi pomohl a to funguje ) ale ještě že pokud má označený jako novinka tak se tak ho to taky vypíše…
Snad mě chápeš to znamená buď to vrací pokud nová cena je menší než stará ale zároveň aby to vracelo popřípadě i produkty který mají nastaveno že jsou novinka…