Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZendFramework]insert
nospor
post
Post #1





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




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ć?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
LBO
post
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Przejrzałem sobie Zend_Db_Adapter_Abstract i nie, nie da rady.

Pozostaje pętelka.

P.S. Hehehe, a jednak się uczysz frame'a (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował LBO 16.06.2009, 13:53:37
Go to the top of the page
+Quote Post
batman
post
Post #3





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




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.
Go to the top of the page
+Quote Post
LBO
post
Post #4





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post
viking
post
Post #6





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




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. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
LBO
post
Post #8





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ja też tak kiedyś myślałem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) wiesz, nie konkretnie z multi-insertem, ale tak ogólnie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) A potem się okazało, że się nie da.
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Daj looknąć
top secret... zaraz polecisz to zenda i sprzedasz im patenty (IMG:http://forum.php.pl/style_emoticons/default/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...
Go to the top of the page
+Quote Post
viking
post
Post #10





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Jest szansa
Hihi, nie ma to jak "optymistyczny" akcent na zakonczenie tematu (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Dziękuję wszystkim za uwagi, spostrzezenia i pomysły. Ide klepać inserta ręcznie.
Go to the top of the page
+Quote Post
golaod
post
Post #12





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




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? (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 23:03