Nette Framework – Database table select where

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

Zdravim vsetkych … mam jeden mensi problem.
Klasicke vypisanie udajov z tabulky:

<?php
<div n:foreach="$conn->table('movies') as $mov">
    {$mov->name}
</div>
?>

takymto sposobom mi vypise prirodzene vsetky riadky v ramci stlpca ‚name‘(vsetky nazvy filmov).

Ja by som ale potreboval, aby mi do jednej premennej dalo iba jeden nazov.
Teda napriklad do premennej {$mov->name} by mi dalo iba 1 nazov …
ako sa to da? som z toho jelen

P.S. nieco ako {$mov->name->where(‚id‘,3)} mi nefunguje

ViPEr*CZ*
Člen | 814
+
0
-

Takeshi napsal(a):
Ja by som ale potreboval, aby mi do jednej premennej dalo iba jeden nazov.

Tomu nějak nerozumím… jak do jedný proměnný jeden název? Když to přeložíme do řeči, tak se ti tam děje to, že pokud ten výběr z databáze něco obsahuje, tak se začne procházet a vypisovat se každej řádek (v tomto případě vždy jméno). A jelikož jste udělal takový dotaz do DB jaký tu máte, tak se samozřejmě vybrali všechny řádky.
Toto {$mov->name->where(‚id‘,3)} je nesmysl. Nemůžete volat metodu nad něčím co není objekt. Podle toho co máte v tom where by jste chtěl asi vybrat jen jeden řádek s id = 3. Toho by jste docílil takto:

<div n:foreach="$conn->table('movies')->where(‚id‘,3) as $mov">

A tady to where jde, protože metoda table před tím vrací instanci objektu Nette\Database\Selection, která má implementovanou metodu where… API

Takeshi
Člen | 596
+
0
-

ViPErCZ napsal(a):

Ospravedlnujem sa, ale niekedy sa neviem vyjadrovat :-) To co ste mi vy odpovedali som skusal aj predtym a islo mi to. Ja len ci sa to neda nejako jednoduchsie, vzhladom nato, ze sa jedna o dlhy nazov

<?php
<div n:foreach="$conn->table('movies')->where(‚id‘,3) as $mov">
?>

Rozmyslal som, ze to pouzijem na zmenu jazyka (tabulka pre anglictinu a pre slovencinu). A teda pre kazde slovo pouzit taky dlhy nazov je neprakticke.

P.S. Skusam nove veci…

ViPEr*CZ*
Člen | 814
+
0
-

No tak si napište nějaký model s obsluhou filtrů a do šablony si pak pošlete jen nějaký alias. V presenteru nemusíte do šablony posílat conn a v šabloně pak sestavit Selection. To můžete právě sestavit v nějaké třídě, která Vám přes nějaký get řekněme toto vrátí. ;-)

Takeshi
Člen | 596
+
0
-

ViPErCZ napsal(a):

No tak si napište nějaký model s obsluhou filtrů a do šablony si pak pošlete jen nějaký alias. V presenteru nemusíte do šablony posílat conn a v šabloně pak sestavit Selection. To můžete právě sestavit v nějaké třídě, která Vám přes nějaký get řekněme toto vrátí. ;-)

Dik za radu … nemate k tomu nejaky manual? :-) Lebo vobec neviem ako to urobit, a tak to skusam svojpomocne :-D

ViPEr*CZ*
Člen | 814
+
0
-

Mrkněte na quickstart

jansfabik
Člen | 193
+
0
-
$conn->table('movies')->find(3)->name

Tahle logika by ale správně měla být v presenteru+modelu a v šabloně pak jen {$movie->name}.