Ověření existence záznamu v databázi

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

Zdravím,

mám další lamovský dotaz, absolutně se mi nedaří vytvořit podmínku pro ověření, zda již neexistuje stejný záznam v databázi. Potřebuji ověřit title a pokud to použiji takto

$this->test = $this->context->createTest()->where(array(
       'title' => (string)$item->title));

 if (!$this->test->title){ }

Laděnka vypisuje Cannot read an undeclared property Test::$title
Dodávám, že $item->title není prázdná, data se předávají, protože bez té podmínky insert bez problémů funguje, potřebuji se vyhnout duplicitám v databázi.

Díky za každou radu

jtousek
Člen | 951
+
0
-

Metoda where nevrací ActiveRow, těch odpovídajících záznamů v db může teoreticky být více. Asi chceš tohle:

$this->test = $this->context->createTest()->where(array(
       'title' => (string)$item->title))->limit(1)->fetch();

 if (!$this->test->title){ }
ViPEr*CZ*
Člen | 817
+
0
-

Metoda fetch() může vrátit FALSE pokud nic nenajde (podle dokumentace).
Potom by to bylo takto:

if ($this->test !== FALSE && !$this->test->title)

Editoval ViPEr*CZ* (17. 6. 2012 13:51)

Musilda
Člen | 12
+
0
-

Díky moc, ještě že se tady na fóru najde někdo ochotný poradit. Musím říct, že komunita tady je podstatně lepší než jinde.

Patrik Votoček
Člen | 2221
+
0
-

lepší by bylo count ne?

jtousek
Člen | 951
+
0
-

S tím záznamem chce zřejmě dále pracovat takže fetch musí proběhnout tak jako tak. Count mi v daném případě připadá zbytečný.

Patrik Votoček
Člen | 2221
+
0
-

já z toho právě nic takového nevyčetl proto se ptám