tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

Jak serializovat objekt dibiFluent

před 9 lety

Skic
Člen | 18

Nevíte, jak nejlépe na serializaci dibiFluent? Celý objekt nelze serializovat, protože obsahuje instanci dibiConnection, která nedovoluje serializaci. Hledá řešení, jak nejlépe znovunačíst a vytvořit dibiFluent z uložených dat.

před 9 lety

phx
Člen | 652

Nevim zda je to mozny, ale mozna by slo mu vnitit zadny nebo nejaky fake DibiConnection, serializovat a pri deserializaci mu zase dat aktualni DibiConnection. Mozna by to byl vhodny FR.

před 9 lety

Skic
Člen | 18

To je prvni moznost (ale nevim, o metodach, ktere by to umely)
Druha moznost je opacna, ziskat z dibiFluent objektu vsechna potrebna data (bez dibiConnection) a pak je tam zase zpatky „nahrat“, ale opet nevim o patricnych metodach.

před 8 lety

basnik
Člen | 3

Prvni moznost (odstraneni a nasledne vlozeni DibiConnection) je mozna v PHP 5.3 pomoci ReflectionProperty, ale neni to asi uplne koser reseni. Druha moznost (ziskani ostatnich dat) opet ztroskota pri rekonstrukci objektu pomoci __wakeup → bylo by potreba nastavit privatni vlastnosti objektu (nejspise lze resit take pomoci Reflection, ale opet nic hezkeho…).

Asi nejlepsi by bylo, kdyby trida DibiFluent poskytla metody setConnection a getConnection, pripadne aby sama pri serializaci ze sebe dibiConnection odstranila a pri unserializaci opet doplnila.

před 8 lety

HosipLan
Moderator | 4693

Mohl bych vědět proč to potřebuješ? Protože si myslím, že to nepotřebuješ :)

před 8 lety

basnik
Člen | 3

Omlouvam se za zpozdeni, nemel jsem aktivovana upozorneni :)

Jde o nutnost preneseni dotazu v serializovanem objektu mezi nactenim stranek a predevsim do skriptu volaneho ajaxem.
Na dalsi strance potrebuji dotaz vratit v takovem tvaru, v jakem byl zadan.

před 8 lety

HosipLan
Moderator | 4693

Ale na to přece není potřeba serializovat fluent.

class NejakyModel extends BaseModel
{

    public function findBy($criteria)
    {
        $q = $this->connection->select('*')->from('tabulka t');
        // ...
        if ($criteria->name) {
            $q->where('t.name = %s', $criteria->name);
        }
        // ...
        if ($criteria->neco) {
            $q->where('t.neco = %i', $criteria->neco);
        }

        return $q->fetchAll();
    }

    // ...
}

Výpís dat

$parametry = (object)array(); // ziskani parametru pro query
$uloziste->save($parametry); // uložení parametrů

$model = new NejakyModel();
$zaznamy = $model->findBy($parametry);

// výpis

Ajax

$parametry = $uloziste->load(); // načtení uložených parametrů

$model = new NejakyModel();
$zaznamy = $model->findBy($parametry);

// výpis