Nette\Database query a ActiveRow
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- ondraondra81
- Člen | 82
Jde nějak udělat vlastní SQL dotaz a odeslat pomocí ->query() tak aby byl výsledek activeRow ?
public function getArchivePosts($year, $month = null, $limit, $offset, $needkey = "No")
{
$sql = "SELECT *
FROM posts
WHERE DATE_FORMAT(date, '%Y') = $year ";
if (isset($month)) {
$sql .= "AND DATE_FORMAT(date, '%m') = $month ";
}
$sql .= "AND needkey = '$needkey' ";
$sql .= "ORDER BY date DESC
LIMIT $offset, $limit";
$result = $this->database->query($sql);
return $result;
}
z výsledku pak potřebuji v latte zavola $post->related(…)
Editoval ondraondra81 (21. 5. 2014 11:31)
- Oli
- Člen | 1215
Podle mě nedá. Každopádně ten tvůj kod je docela blbej v tom, že všechny proměnný dáváš rovnou do toho dotazu. Měli by být jako parametr.
Nicméně neměl by být problém přepsat to do NDBT. Něco jako
public function getArchivePosts($year, $month = null, $limit, $offset, $needkey = "No"){
$temp = $context->table('posts')->where("DATE_FORMAT(date, '%Y')", $year)->where('needkey', $needkey)
if (isset($month)) {
$temp = $temp->where("DATE_FORMAT(date, '%m')", $month);
}
return $temp->order('date DESC')->limit($offset, $limit);
}
- ondraondra81
- Člen | 82
No v tom je trochu problém.
když udělám
return $posts = $this->database->table('posts')
->where("DATE_FORMAT(date, '%Y') = ?", $year)
->where("DATE_FORMAT(date, '%m') = ?", $month)
->where("needkey = ?", $needkey)
->order('date DESC')
->limit($limit, $offset);
}
Tak z toho vznikne
SELECT *
FROM `posts`
WHERE (DATE_FORMAT(`date`, '%Y') = '2014') AND (DATE_FORMAT(`date`, '%`m`') = '05') AND (`needkey` =
'No')
ORDER BY `date` DESC
LIMIT 4
tedy escapuje se z najakeho duvodu to m
a dotaz nefunguje
- David Matějka
- Moderator | 6445
a nebo pouzij
...
->where("DATE_FORMAT(date, ?) = ?", '%Y', $year)
->where("DATE_FORMAT(date, ?) = ?", '%m', $month)
...