Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework]insert
Forum PHP.pl > Forum > PHP > Frameworki
nospor
Hejka,
rekord do tabeli można włożyć tak:
http://framework.zend.com/manual/en/zend.d...er.write.insert
A co jeśli chcę włożyć naraz więcej niż jeden rekord? Da się to zrobić mniej więcej na podobnej zasadzie? Czy muszę sobie sam radośnie utworzyć takie zapytanie i wykonać?
LBO
Przejrzałem sobie Zend_Db_Adapter_Abstract i nie, nie da rady.

Pozostaje pętelka.

P.S. Hehehe, a jednak się uczysz frame'a smile.gif
batman
Na szybkiego przychodzą mi do głowy dwie metody:
1. Zrób dużą tablicę z danymi - nie gwarantuję, że zadziała
  1. <?php
  2. $data = array(
  3.    array(
  4.        'id' => 1,
  5.        'pole' => 'wartosc'
  6.    ),
  7.    array(
  8.        'id' => 2,
  9.        'pole' => 'wartosc 2'
  10.    )
  11. );
  12. ?>

2. W pętli stwórz nowy wiersz poprzez createRow, dodaj do wiesza dane i zapisz przez metodę save.
LBO
A nie wygodniej:

  1. <?php
  2. $rows = array(
  3.    array(
  4.        'created_on'      => '2007-03-22',
  5.        'bug_description' => 'Something wrong',
  6.        'bug_status'      => 'NEW'
  7.    ),
  8.    array(
  9.        'created_on'      => '2007-08-01',
  10.        'bug_description' => 'Another application bug :(',
  11.        'bug_status'      => 'NEW'
  12.    )
  13. );
  14.  
  15. foreach($rows as $data) {
  16.    $db->insert('bugs', $data);
  17. };
  18. ?>
nospor
Cytat
Przejrzałem sobie Zend_Db_Adapter_Abstract i nie, nie da rady.
Tez przegladalem i doszedlem do podobnych wnioskow. Myslalem, ze moze jednak jakis wyjadacz z Zenda wie cos wiecej.

Cytat
Hehehe, a jednak się uczysz frame'a
Do pracy. Prywatnie nie uzywam. zend nie dosiega nawet do pięt mojego frameworka ;D

Co do waszych metod z pętelką:
no wlasnie chcialem uniknac x pytan w petlach. Wiem, iż to najprostrze, ale niestety dalekie od jakiejkolwiek wydajnosci. Mowie to przykladowo o tysiącu albo więcej insertow.
Będę wiec musial recznie skladac zapytanie i normalnie wykonywac. Myslalem, iż zend przyjdzie mi tu z pomocą, ale jak jak zwykle po raz kolejny się na nim zawiodłem.
viking
Na czystym sql jak byś to zrobił? Też musisz klepać inserty co najwyżej z wieloma values (co oczywiście przy kilku tysiącach rekordów dałoby widoczną różnicę). W samym PDO też nie przypominam sobie aby dało się inaczej niż [prepare, (bind, execute)]. createRow() nie polecałbym bo wykonuje się dodatkowy select po insert.
nospor
Cytat
co najwyżej z wieloma values
dokladnie tak. Mialem nadzieje, iz wypasiony ZF zrobi to za mnie automatycznie, gdy podam mu tablicę rekordów. smile.gif
LBO
Cytat(nospor)
Tez przegladalem i doszedlem do podobnych wnioskow. Myslalem, ze moze jednak jakis wyjadacz z Zenda wie cos wiecej.

Bazy danych w ZF są bardzo biedne. O ile nie potrzebujesz ORM całego, to polecam ezcDatabase

Cytat(nospor)
Do pracy. Prywatnie nie uzywam. zend nie dosiega nawet do pięt mojego frameworka ;D

Daj looknąć ;P

Cytat(nospor)
dokladnie tak. Mialem nadzieje, iz wypasiony ZF zrobi to za mnie automatycznie, gdy podam mu tablicę rekordów. smile.gif

Ja też tak kiedyś myślałem smile.gif wiesz, nie konkretnie z multi-insertem, ale tak ogólnie smile.gif A potem się okazało, że się nie da.
nospor
Cytat
Daj looknąć
top secret... zaraz polecisz to zenda i sprzedasz im patenty winksmiley.jpg

Cytat
Ja też tak kiedyś myślałem wiesz, nie konkretnie z multi-insertem, ale tak ogólnie A potem się okazało, że się nie da.
No to trzeba bedzie pisac kolejną nakladke na zenda. Nie pierwsza i zapewne jeszcze nie ostatnia. :/

Cytat
Bazy danych w ZF są bardzo biedne
zeby to tylko bazy danych...
viking
W sumie to nawet zgłoszone to jest: http://zendframework.com/issues/browse/ZF-...omment-tabpanel
Trochę się tym przepychają od 1,5 roku. Jest szansa smile.gif
nospor
Cytat
Jest szansa
Hihi, nie ma to jak "optymistyczny" akcent na zakonczenie tematu winksmiley.jpg

Dziękuję wszystkim za uwagi, spostrzezenia i pomysły. Ide klepać inserta ręcznie.
golaod
Jeszcze ja się wtrącę.

Sugerujecie, że kilkukrotne VALUES rozwiąże sprawę. Co jednak w sytuacji gdy zapytanie przekroczy standardowe 16MB lub, co gorsza, na serwerze będzie jeszcze mniejszy limit zapytania ? Wiem, że to często skrajności jednak trzeba to mieć na uwadze smile.gif
nospor
no az tak tepy nie jestem. oczywiscie te 1000 rekordow podzielnym na paczki np. po 20 rekordow i przykladowo zamiast 1000 zapytan mialbym tylko 50. Jest roznica, prawda? winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.