Problem SELECT COUNT v latte
- steelbull
- Člen | 241
Caute priatelia, nemozem sa pripojit na Jabber, tak pisem tu.
Model:
$result = $this->context->table(self::TABLE_NAME)->count();
return $result;
Presenter:
$this->template->myvariable = $result;
Template:
{myvariable}
Hlasi mi chybu:
Object of class Nette\Database\ResultSet could not be converted to string
A ked upravim model na:
$result = $this->context->table(self::TABLE_NAME)->count();
$result->fetch();
Hlasi mi chybu:
Object of class Nette\Database\Row could not be converted to string
Dakujem za pomoc.
- David Matějka
- Moderator | 6445
imho budes mit chybu jinde, count vzdy vraci int, viz api
a nepouzivej ->count()
, ale ->count('*')
.
Prvni zapis provede dotaz, vybere vsechny radky a provede count nad selection.
Druhy zapis provede primo SQL na spocitani radku
- steelbull
- Člen | 241
Matej21: dakujem za odpoved, riesenie je nasledujuce:
FUNGUJE:
$result =
$this->context->table(self::TABLE_NAME)->where(self::COLUMN_WU_ID.' IS
NOT NULL')->count(‚*‘);
return $result;
NEFUNGUJE:
$result =
$this->context->table(self::TABLE_NAME)->where(self::COLUMN_WU_ID.' IS
NOT NULL');
$result->count(‚*‘);
return $result;
- Oli
- Člen | 1215
Nefunguje to proto, že jsi to špatně použil. Ten druhej řádek vrátí sice int, ale ničemu to nepřiřadí a $result obsahuje tu hodnotu bez count. Správně by to bylo
// 1)
$result = $this->context->table(self::TABLE_NAME)->where(self::COLUMN_WU_ID.' IS NOT NULL');
$result = $result->count(‚*‘);
return $result;
// 2)
$result = $this->context->table(self::TABLE_NAME)->where(self::COLUMN_WU_ID.' IS NOT NULL');
return $result->count(‚*‘);
EDIT// opravdu ty kusy kodu formatuj. Staci k tomu jednou kliknout mysi. Tohle se strasne blbě čte!
Editoval Oli (4. 11. 2014 19:27)
- steelbull
- Člen | 241
[SOLVED]
Supeeeer, velmi pekne dakujem Oli.
$result = $this->context->table(self::TABLE_NAME);
if($status == 1) {
$result->where(self::COLUMN_WU_ID.' IS NULL');
} else {
$result->where(self::COLUMN_WU_ID.' IS NOT NULL');
}
$result = $result->count('*');
return $result;
A: existuje sposob, ako vnorit jeden select do ineho?
Editoval steelbull (4. 11. 2014 19:36)