Jak zrobić update do bazy do pola array w zend ?

0

Mam prosty przykład i nie wiem jak to zrobić. W bazie danych mam pole które jest tablicą integer: integer[];
Jak wpisze sobie UPDATE table SET raw = array[1,2,3] to dane wskakują do bazy. A jak zrobie tak jak poniżej w kodzie

$tabica = array(4,5,6);
$data = array('raw' => $tablica);
$where = array("id = 3");      
update('table', $data, $where);

to mi wywala błędy, że nie może dodać. Jak to zrobić ?

0

już samo przechowywanie tablicy w atomowym polu tabeli nie jest dobrym rozwiązaniem, ponieważ uniemożliwia wykonywanie zapytań sql na danych w tablicy

jeśli już naprawdę musisz to serializuj tablice tuż przed zapisaniem do bazy i zdeserializuj zaraz po odczytaniu, wystarczy skorzystać z funkcji:
serialize() - http://php.net/manual/en/function.serialize.php
unserialize() - http://php.net/manual/en/function.unserialize.php

0
$tabica = array(4,5,6);
$tabica = '{' . implode(',', $tabica) . '}'; //ta linijka
$data = array('raw' => $tablica);
$where = array("id = 3");      
update('table', $data, $where);

Ok dostałem pomoc, jakby ktoś trzebował to zaznaczyłem linijke

1

Zanim zaczniecie krzyczeć o postaciach normalnych zajrzyjcie tutaj:
http://www.postgresql.org/docs/9.1/static/arrays.html

To jest taka namiastka NoSQL w PostgreSQL.

1

@masterO - dla tablicy intów to spoko, ale dla tablicy stringów (o ile się da) już lipne rozwiązanie.

@lhp: NIE NIE NIE NIE <font size="6">NIE DLA serialize</span>. Właśnie zdradziłeś, że jesteś początkujący ;) serialize to potencjalne dziury, bugi, zajmuje więcej miejsca w bazie niż json i jest mniej przenośny i kłopotliwy, jeżeli chcemy sobie na szybko jakimś panelem www wyedytować wpis w bazie, a serializujemy stringi ze znakami nowej linii - nie będziemy w stanie zrobić deserializacji.

0

@dzek69

w sumie jeśli chodzi o przechowywanie tablic to json może i ma pewną przewagę, ale Twój argument o szybkiej edycji 'z palca' wpisów w bazie zupełnie mnie nie przekonał

generalnie do przechowywania złożonych struktur (zaczynając od prostych tablic, a kończąc na obiektach zawierających referencję do innych obiektów) służy mechanizm serialize/deserialize, który daje pełną kontrolę nad procesem serializacji

1 użytkowników online, w tym zalogowanych: 0, gości: 1