Oznámení
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