addSelect – jak zapsat aby to fungovalo
- lopikol
- Začátečník | 75
presenter:
<?php
$this->addSelect('category', 'Kategorie', array(\ContentModel::getCategories()->name));
?>
model:
<?php
public static function getCategories()
{
return dibi::fetchAll('SELECT name FROM [categories] WHERE [publish] = 1');
}
?>
Takhle to nefunguje. zkoušel jsem tu hledat příklad, ale nic. Poradíte mi prosím.
- lopikol
- Začátečník | 75
Nechci zbytečně zakládat topic.
Dá se nějak zjistit poslední ID, které bylo už použito.
Napsal jsem už 30 šlánků > poslední ID je 30.
Poté jich 5 smažu > poslední ID je 25
Je možné nějak zjistit, že další ID které bude přiřazeno bude 31??
pomocí tohoto zjistím poslední ID v DB > to právě nepotřebuji.
SELECT id FROM [articles] ORDER BY [id] DESC
Editoval lopikol (16. 2. 2011 0:20)
- lopikol
- Začátečník | 75
Když se nad tím zamyslím, tak to nepůjde. Tvořím seo title a aby byly ojedinělé, tak před ně přidávám číslo (id poslednícho článku +1). Jenže když smažu nějaké články, tak by se mohlo stát, že se budou opakovat.
Možná bych tam mohl vkládat datum ve formátu rokměsícden.
Dá se nějak upravit funkce DateTime(), aby datum byl přímo v tomto formátu?
- wise
- Člen | 161
A co uložit článek, pomocí dibi:getInsertId() si vytáhnout jeho id a hodit update na row s tím ID a editovat ten seo title?
Edit: dibi:getInsertId() ti vrátí id posledního vloženého záznamu. V případě, že máš článek s ID 31 a 5 jich smažeš, tak v tabulce bude poslední záznam s ID 25 (např.), ale samotná tabulka má proměnnou AUTO_INCREMENT. A ta se při mazání záznamů nemění. Takže když vložíš nový záznam, bude tam mezera (články např. s ID 24, 25, 32, 33,…).
Je to to, co potřebuješ vědět?
Editoval wise (16. 2. 2011 0:46)
- wise
- Člen | 161
Složité? :-)
<?php
dibi::query("INSERT INTO [clanky]", $arr);
$id = dibi::getInsertId();
dibi::query("UPDATE [clanky] SET [title] = %s", formatTitle($title), " WHERE [id] = %i", $id);
?>
S tím DateTime si nejsem jistý. Pokud chceš uložit do db nějaký datum resp. k tomu title přidat, např. aby title byl: „YYMMDD-muj-seo-title“, tak datum získáš: date(„Ynj“, time()); a to pak ulož do db (tím první parametrem si nejsem jistý (jde mi o to, že je to bez mezer). Mrkni ještě na php.net/date.