24
Propel operatory logiczne AND i OR – łączenie
Niektórzy mogą mieć problemy z tworzeniem zapytań w Propelu z dodaniem kryterii z operatorami logicznymi AND i OR. W przypadku prostego warunku wystarczy wpisać:
$c1 = $c->getNewCriterion(DokumentyPeer::SYMBOL, 'FV'); $c2 = $c->getNewCriterion(DokumentyPeer::SYMBOL, 'FI'); $c1->addOr($c2); $c->add($c1);
Można również użyć:
$c1->addAnd($c2);
Jeżeli chcemy możemy również łączyć te warunki, np:
$c1 = $c->getNewCriterion(DokumentyPeer::OKRES_ROK, $rok_start, Criteria::GREATER_EQUAL); $c2 = $c->getNewCriterion(DokumentyPeer::OKRES_ROK, $rok_koniec, Criteria::LESS_EQUAL); $c1->addAnd($c2); $c3 = $c->getNewCriterion(DokumentyPeer::OKRES_ROK, $rok_uruchomienia_start, Criteria::GREATER_EQUAL); $c4 = $c->getNewCriterion(DokumentyPeer::OKRES_ROK, $rok_uruchomienia_koniec, Criteria::LESS_EQUAL); $c3->addAnd($c4); $c1->addOr($c3); $c->add($c1);
Czyli
WHERE (dokumenty.okres_rok >= $rok_start AND dokumenty.rok_start <= $rok_start) OR (dokumenty.okres_rok >= $rok_uruchomienia_start AND dokumenty.rok_start <= $rok_uruchomienia_koniec)
28
Podzapytania w Propel – SELECT NOT IN
Propel niestety nie posiada obsługi podzapytań. Możemy temu łatwo zaradzić, na przykład tak:
$criteria = new Criteria(); $subquery = 'table1.id NOT IN (SELECT id FROM table2)'; $criteria->add(Table1Peer::ID, $subquery , Criteria::CUSTOM); return Table1Peer::doSelect($c);
Czyli:
SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2);
10
Gettext w Symfony – pliki .po
Symfony oferuje korzystanie z XLIFF jako domyślnego systemy do tłumaczeń. Mi osobiście bardziej odpowiada funkcja gettext z plikami .po.
gettext() jest bardzo dobrym wyborem, łatwym w użyciu, a co najważniejsze popularnym, dzięki czemu tłumacze nie mają problemu ze znalezieniem dobrych, łatwych w obsłudze narzędzi.
Poniżej przedstawiam krok po kroku jak ustawić symfony pod gettext. więcej…
6
Symfony propel:build-all – utrata danych
Podczas wywoływania komendy:
symfony propel:build-all
tworzone są pliki modelu oraz uaktualniana jest struktura bazy danych. Niestety symfony usuwa wtedy wszystkie dane z bazy. Jak temu zaradzić? Można zrobić zrzut danych.
Przed uaktualnianiem modelu należy wywołać komendę:
symfony propel:data-dump --application=appname filename.yml
Na przykład:
symfony propel:data-dump --application=backend danezbackendu.yml
i następnie:
symfony propel:build-all-load
Gotowe!!!
Ja osobiście wolę to zrobić inaczej. Nie używam kompletnie build-all Zmieniam co trzeba w schema.yml, potem wywołuję
symfony propel:build-model
symfony propel:build-filter
symfony propel:build-form
Zaś zmiany w samej bazie robię ręcznie, za pomocą phpMyAdmin, NaviCat, albo w postaci zapytania. Metoda dużo szybsza i lepsza.
17
Instalacja Symfony na hostingu linuxpl.com
Hosting Linuxpl.com oferuje zainstalowaną wersję Symfony, niestety 1.0.19. Nowszej nie chcą zainstalować, bo wszystkim użytkownikom sypią się projekty. Na szczęście można zainstalować własną wersję – a nawet kilka. Poniżej przedstawiam jak można to zrobić. więcej…
Kategorie
- Podróże (4)
- Turcja 2007 (4)
- Polecam lub odradzam (2)
- Programowanie (31)
- Różne (8)
- Triki (4)
- Tłumaczenia (18)
- cforms (10)
- Glossary (1)
- Morfeoshow (2)
- Phoca Gallery (1)
- QuickFAQ (1)
- Register Plus (1)
- StatPress (1)
- Subscribe To Comments (1)
- WP-PostRatings (1)
- Zdjęcia (24)
