Problem SELECT COUNT v latte

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
steelbull
Člen | 241
+
0
-

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
+
+2
-

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
+
0
-

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;

steelbull
Člen | 241
+
0
-

Opat problem, potrebujem docielit toto:

$result = $this->context->table(self::TABLE_NAME);

if($podmienka) {
$result->where(self::COLUMN_WU_ID.' IS NOT NULL');
 }

$result->count(‚*‘);

Oli
Člen | 1215
+
+1
-

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
+
0
-

[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)