Pokazywanie postów oznaczonych etykietą function. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą function. Pokaż wszystkie posty

2015-11-27

Z underscore na CamelCase

Jak zamienić w PHP string z this_is_test na ThisIsTest? Poniżej znajduje się linijeczka kodu, która robi taką fajną rzecz.

preg_replace('/(?:^|_)(.?)/e', "strtoupper('$1')", "this_is_test");

źródło: devops.zone

Umieściłem to polecenie w bibliotece tools dostępnej w serwisie GitHub.

2015-10-13

PHP DateTime: Pierwszy i ostatni dzień poprzedniego miesiąca

Od PHP 5.3 pierwszy i ostatni dzień miesiąca można wybrać w bardzo prosty sposób:
$dataod = new \DateTime('first day of previous month');
$datado = new \DateTime('first day of previous month');
Można w ten sposób w prosty sposób przypisać domyślne wartości w formularzu:
$command = new EksportSwiadczenDoCsvCommand();
$command->setDataod(new \DateTime('first day of previous month'));
$command->setDatado(new \DateTime('last day of previous month'));

$form = $this->createForm('platne_eksport_zlecen_do_csv', $command);

$form->handleRequest($request);

if($form->isValid()){
    //...
}
W ten sam sposób możemy wybrać również pierwszy i ostatni dzień aktualnego miesiąca - odpowiadają za to zmienne 'first day of this month' oraz 'last day of this month'.

2013-10-31

[jQuery] Funkcja .live() w jQuery 1.9+

Od wersji 1.9 jQuery nie znajdziesz już funkcji .live() - jeśli z jakiegoś powodu potrzebujesz jej w dalszym ciągu pomoże Ci w tym ten oto fragment kodu:
jQuery.fn.extend({
live: function( types, data, fn ) {
          if( window.console && console.warn ) {
           console.warn( "jQuery.live is deprecated. Use jQuery.on instead." );
          }

          jQuery( this.context ).on( types, this.selector, data, fn );
          return this;
        }
});

źródło: http://stackoverflow.com/questions/8021436/turning-live-into-on-in-jquery

2013-01-10

[psql] Wyciągnięcie id z inserta i wykorzystanie go w innym insercie

Tym razem problem SQL'owy. Miałem dziś potrzebę stworzenia zapytania, które rozpisze dane z pewnej tabeli do dwóch powiązanych ze sobą tabel. Potrzebowałem w tym celu id zapisywanej pozycji aby móc ją wykorzystać w innym insercie. Tutaj z pomocą przyszła mi możliwość utworzenia w PostgreSQL funkcji oraz triggerów. Jako pierwsze stworzyłem funkcję insert_po_insercie() za pomocą której dokonuję operacji na tej drugiej tabeli (posiadając już id):
create function insert_po_insercie()
  returns trigger
as $$
begin
  insert into table_02 (ido, idm, komentarz, idp, idupr, iddest) values ('0', '0', 'testowy komentarz', new.idp, (select id from upr where kod='ewus'), new.id);
  return new;
end;
$$ language plpgsql;
Później stworzyłem triggera insert_po_insercie, który wygląda tak:
create trigger insert_po_insercie
  after insert on table_01
for each row
execute procedure insert_po_insercie();
Widać tutaj, że po insercie do tabeli table_01 wywoływana jest funkcja insert_po_insercie(). Mając już tak funkcję i triggera można wykonać inserty do tabeli table_01:
INSERT INTO table_01 (id_operacji, data_czas_operacji, idp) SELECT id_operacji, data_czas_operacji, idp FROM guilty_table;
W funkcji przy tworzeniu inserta skorzystałem z świeżo utworzonego id (new.id) oraz przy okazji idp (new.idp), które również było mi potrzebne. Można w ten sposób pobierać dowolną kolumnę z tabeli źródłowej. Funkcja poza pokazanym na przykładzie insertem może robić wiele innych czynności. Na przykład po insercie można umieścić update do jeszcze innej tabeli, w której z kolei skorzystamy z id nowoutowrzonego inserta:
create function insert_po_insercie()
  returns trigger
as $$
begin
  insert into table_02 (ido, idm, komentarz, idp, idupr, iddest) values ('0', '0', 'testowy komentarz', new.idp, (select id from upr where kod='ewus'), new.id);
  update table_03 set idx=currval('table_02_id_seq'::regclass) where id=new.id;
  return new;
end;
$$ language plpgsql;
Całość wygląda zatem tak:
create function insert_po_insercie()
  returns trigger
as $$
begin
  insert into table_02 (ido, idm, komentarz, idp, idupr, iddest) values ('0', '0', 'testowy komentarz', new.idp, (select id from upr where kod='ewus'), new.id);
  update table_03 set idx=currval('table_02_id_seq'::regclass) where id=new.id;
  return new;
end;
$$ language plpgsql;

create trigger insert_po_insercie
  after insert on table_01
for each row
execute procedure insert_po_insercie();

INSERT INTO table_01 (id_operacji, data_czas_operacji, idp) SELECT id_operacji, data_czas_operacji, idp FROM guilty_table;
Pozdrawiam!