Artykuły w "Symfony"
paź
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)
lip
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);
mar
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…

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

sty
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…