tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

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

DibiTable multi insert

před 10 lety

simon
Člen | 98

Zdravim,
tohle asi dibi neumi ze?

<?php
$tagsToAdd[] = array("name" => 'jedna');
$tagsToAdd[] = array("name" => 'dve');
$tagsToAdd[] = array("name" => 'tri');


$tag = new Tag();
$tag->insert($tagsToAdd);
?>

a nebo ano?;)

PS: takhle to zatim resim, chtel bych to resit ale pres DibiTable:

<?php
dibi::query('INSERT INTO [blog_tags] %ex', $tagsToAdd);
?>

před 10 lety

PetrP
Člen | 587

DibiTableX::insert() to (podle API) nepodporuje. A jelikož se tato třída dále nevyvíjí tak ani nehrozí že by se začalo podporovat (škoda).
Můžeš si to ale přidat sám třeba do BaseDibiTable které dáš jako předka všech tvých modelů.

BaseDibiTable extends DibiTableX {
public function insert($data) //nebo si to třeba nazvat jinak
{
    $this->connection->query(
        'INSERT INTO %n', $this->name, is_array(current($data))?'%ex':'%v', $data
    );

    return $this->primaryAutoIncrement ? $this->connection->insertId() : NULL;
}
}

Editoval PetrP (25. 2. 2009 9:38)

před 10 lety

simon
Člen | 98

Ona uz se nadale vyvijet nebude?(prekvapeny smajl). Ja myslel, ze proto se oddelila od Dibi aby ji bylo mozno snadneji rozsirovat. A co dibi, to se vyvijet bude? Hrozne me to mrzi, mam pocit ze dibi je tak trochu ve stinu Nette zanedbavano, pritom je to podle me jeho velmi dulezita soucast…

Diky za ukazku kod, zkusim si to doimplementovat sam.

před 10 lety

PetrP
Člen | 587

David Grudl napsal

Bylo to tu řešeno na více místech, zkrátka DibiTable nelze dále v současné podobně vyvíjet.

Dibi se vyvíjet bude, a taky se neustále vyvíjí. Ale DibiTable bylo z dibi odstraněno protože s ním david není spokojen, považuje ho jako krok špatným směrem. Jak psal jinde (nemůžu najít) tak za správný krok považuje např DibiDataSource. Uvidíme jestli se časem bude moct nějak intuitivně použít místo DibiTable (momentálně to znamená 100% přepsání kódu), to je taky důvod proč je pořád dostupný i když mimo dibi (jen jako nadstavba).

Možná by někdo DibiTable mohl vyvíjet dál sám, ale podle mě to licence dibi extra neumožňuje. (už jenom by se to nemohlo jmenovat DibiTable ;])

Dibi je ve stínu Nette hlavně kvůli dokumentaci. Naštěstí není tak složité a v API se dá v pohodě ledacos vyčíst.

Editoval PetrP (25. 2. 2009 10:22)

před 10 lety

phx
Člen | 652

V dibi se to ted zameruje na DibiDataSource. S cims zacinam take postupne souhlasit:)

před 10 lety

simon
Člen | 98

Aha, díky za osvětlení. Tak to abych to začal předělávát všechno do DibiDataSource…