Date post: | 16-Apr-2017 |
Category: |
Technology |
Upload: | pehapkari |
View: | 77 times |
Download: | 0 times |
PHP Evening #1Propel ORM
Martin Sojka
@sojki
Intro◉ Co to je? Koho to vůbec zajímá?◉ Jako to dostat do (nejen) Symfony?◉ Umí to něco?◉ Co Propel umí ve skutečnosti.◉ Co Propel neumí, proč je naprd.◉ Otázky nakonec.
ORM V PHP * - Doctrine 17M- Propel 800 k- Redbean 250 k- Eloquent- Rozdíly
https://goo.gl/h2RMdB | http://www.mehdi-khalili.com/orm-anti-patterns-part-1-active-record/
https://goo.gl/EnNRer | http://www.vertabelo.com/blog/technical-articles/side-by-side-doctrine2-and-propel-2-comparison
* dle packaigist
Co má Propel stejné jako Doctrine
◉ Výborná dokumentace◉ Symfony bridge
Co jde lépe
◉ IDE friendly◉ Učící křivka
A co na to Propel sám?
http://sandbox.propelorm.org/example/i18n - Vyzkoušejte Propel v sandboxu, bez nutnosti cokoli instalovat
Jak se Symfony?
- $ composer create project symfony/standart-edition-nebo-tak-něco ./
- $ composer require propel/propel:2.0.0-alpha6@dev propel/propel-bundle:~3.0@dev
- V AppKernel.php přidejte PropelBundle new Propel\Bundle\PropelBundle\PropelBundle(),
- Přidejte propel section do config.yml (viz. Odkaz níže)
- Vytvořte schema.xml v /src/AppBundle/Resources/config/schema.xml ve schématu
nezapomenout nastavit namespace (musí v něm být Bundle aby se to třídy správně
vygenerovaly, jinak se generují do rootu).
- $ bin/console propel:sql:build && bin/console propel:sql:insert
- Volitelně: Odstranit doctrine :) (composer, AppKernel a config.yml)
https://goo.gl/dLzzft | http://propelorm.org/documentation/cookbook/symfony2/working-with-symfony2.html
Basic usage
- Dokumentace- Propel ORM sandbox- CRUD
http://propelorm.org/documentation/03-basic-crud.html
Performance
Uložení 2000 položek, prostá entita bez vazeb se třemi atributy
Process memory usage - peak MB
Propel - basic 328
Doctrine - same code 330.6
Doctrine - with clear 325.6
Doctrine - with end-flush 330.6
Data-mapper/unit of work je v Propel branch plánovaná pro release 2.0.0, do té doby bude Propel stále alpha, bez ohledu na to jak stabilní je. Dokud bude v Propel Active record, nevyjde release 2.0.0.
Sample project with sample model and data
- Working with ants- Sample queries- Behaviors show case
- Import from CSV- Export to CSV, Export to XML- Working with JSON example
https://gist.github.com/sojki/9863039d922798fc9c3b933b28faaaf6
Je libo JSON?
$json = <<<JSON
{
"foo" : "bar",
"bar" : {
"subkey" : "value"
}
}
JSON;
$query->where('content->"$.bar.subkey" = "value"');
<column name="content" type="varchar" sqlType="json" />
Temná stránka
◉ Stále pouze alpha, @dev stability (viz. odkaz níže)◉ BC breaks◉ Data mapper branch, unit of work◉ Komunita není tak velká, jako u Doctrine
goo.gl/EzKwXX | http://propelorm.org/blog/2015/06/27/propel2-current-state-and-future.html