Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework]insert
nospor
post 16.06.2009, 13:34:59
Post #1





Grupa: Moderatorzy
Postów: 36 557
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ć?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
LBO
post 16.06.2009, 13:53:19
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 smile.gif

Ten post edytował LBO 16.06.2009, 13:53:37
Go to the top of the page
+Quote Post
batman
post 16.06.2009, 13:53:21
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.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
LBO
post 16.06.2009, 14:03:48
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 16.06.2009, 17:48:53
Post #5





Grupa: Moderatorzy
Postów: 36 557
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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
viking
post 17.06.2009, 06:04:13
Post #6





Grupa: Zarejestrowani
Postów: 6 378
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 17.06.2009, 06:05:49
Post #7





Grupa: Moderatorzy
Postów: 36 557
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. smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
LBO
post 17.06.2009, 07:05:54
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. 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.
Go to the top of the page
+Quote Post
nospor
post 17.06.2009, 07:09:05
Post #9





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




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...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
viking
post 17.06.2009, 07:32:36
Post #10





Grupa: Zarejestrowani
Postów: 6 378
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 smile.gif


--------------------
Go to the top of the page
+Quote Post
nospor
post 17.06.2009, 07:36:28
Post #11





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




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
golaod
post 17.06.2009, 10:12:00
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 smile.gif
Go to the top of the page
+Quote Post
nospor
post 17.06.2009, 10:21:11
Post #13





Grupa: Moderatorzy
Postów: 36 557
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? winksmiley.jpg


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 25.06.2025 - 23:45