{"id":141,"date":"2017-09-09T00:51:02","date_gmt":"2017-09-09T03:51:02","guid":{"rendered":"http:\/\/hackerzone.com.br\/blog\/?p=141"},"modified":"2022-08-13T00:20:52","modified_gmt":"2022-08-13T03:20:52","slug":"trabalhando-com-data-fixture-no-zend-framework-3","status":"publish","type":"post","link":"http:\/\/hackerzone.com.br\/blog\/trabalhando-com-data-fixture-no-zend-framework-3\/","title":{"rendered":"Trabalhando com Data Fixture no Zend Framework 3"},"content":{"rendered":"<p>Se voc\u00ea pretende utilizar Data Fixtures no seu projeto Zend na vers\u00e3o 3 em diante, voc\u00ea pode utilizar este pacote:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\ndkorsak\/doctrine-data-fixture-module\r\n<\/pre>\n<p>Link do pacote no site composer:<br \/>\n<a href=\"https:\/\/packagist.org\/packages\/dkorsak\/doctrine-data-fixture-module\">https:\/\/packagist.org\/packages\/dkorsak\/doctrine-data-fixture-module<\/a><\/p>\n<p>(Este conte\u00fado fornece uma dica a mais do que esta na documenta\u00e7\u00e3o do pacote)<\/p>\n<p>Basta adicionar em seu composer.json na sess\u00e3o &#8220;require&#8221; depois dar um update em seu projeto via comando<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n&quot;name&quot;: &quot;zendframework\/skeleton-application&quot;,\r\n    &quot;description&quot;: &quot;Skeleton Application for Zend Framework zend-mvc applications&quot;,\r\n    &quot;type&quot;: &quot;project&quot;,\r\n    &quot;license&quot;: &quot;BSD-3-Clause&quot;,\r\n    &quot;keywords&quot;: [\r\n        &quot;framework&quot;,\r\n        &quot;mvc&quot;,\r\n        &quot;zf&quot;\r\n    ],\r\n    &quot;homepage&quot;: &quot;http:\/\/framework.zend.com\/&quot;,\r\n    &quot;minimum-stability&quot;: &quot;dev&quot;,\r\n    &quot;prefer-stable&quot;: true,\r\n    &quot;require&quot;: {\r\n        &quot;dkorsak\/doctrine-data-fixture-module&quot;:&quot;^1.0&quot;,\r\n<\/pre>\n<p>Comando via console (na pasta raiz do projeto)<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nphp composer.phar update\r\n<\/pre>\n<p>Voc\u00ea tamb\u00e9m pode instalar via comando da seguinte forma:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nphp composer.phar require dkorsak\/doctrine-data-fixture-module\r\n<\/pre>\n<p>N\u00e3o esque\u00e7a \u00e9 claro que os seguintes m\u00f3dulos j\u00e1 precisam estar sendo inciados:<br \/>\n<strong>DoctrineModule<\/strong>, <strong>DoctrineORMModule <\/strong>e <strong>DoctrineDataFixtureModule<\/strong><br \/>\nEm \/application\/config\/modules.config.php<\/p>\n<p>Tamb\u00e9m n\u00e3o esque\u00e7a de configurar dentro de seu Module para apontar onde se encontra nossas Fixtures<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n&lt;?php\r\nreturn array(\r\n    'doctrine' =&gt; array(\r\n        'fixture' =&gt; array(\r\n            'ModuleName' =&gt; __DIR__ . '\/..\/src\/ModuleName\/Fixture',\r\n        )\r\n    )\r\n);\r\n?&gt;\r\n<\/pre>\n<p>A biblioteca ser\u00e1 baixada e instalada, depois para utiliza-la ser\u00e1 via comando tamb\u00e9m, voc\u00ea tem as seguintes op\u00e7\u00f5es:<br \/>\n<strong>Padr\u00e3o<\/strong><\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n.\/vendor\/bin\/doctrine-module orm:fixtures:load \r\n<\/pre>\n<p><strong>Trunca e sem confirma\u00e7\u00e3o<\/strong> (Passa por cima dos dados caso j\u00e1 tenha cadastrado, vai deletar os atuais e substituir)<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n.\/vendor\/bin\/doctrine-module orm:fixtures:load -n --purge-with-truncate\r\n<\/pre>\n<p><strong>Adicionar dados sem deletar os anteriores<\/strong><\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n.\/vendor\/bin\/doctrine-module orm:fixtures:load -n --append\r\n<\/pre>\n<p>Exemplo de Fixture criada:<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nnamespace MODVeiculo\\Fixture;\r\n\r\nuse Doctrine\\Common\\DataFixtures\\AbstractFixture;\r\nuse \\Doctrine\\Common\\Persistence\\ObjectManager;\r\nuse \\Doctrine\\Common\\DataFixtures\\OrderedFixtureInterface;\r\n\r\nuse MODVeiculo\\Entity\\Veiculo;\r\n\r\nclass LoadVeiculo extends AbstractFixture implements OrderedFixtureInterface{\r\n    \r\n    public function getOrder() {\r\n        return 8;\r\n    }\r\n\r\n    public function load(ObjectManager $manager) {\r\n        \r\n        \/\/1        \r\n        $idEmpresa = $manager-&gt;getReference(\\MODEmpresa\\Entity\\Empresa::class, 1);\r\n        $idCliente = $manager-&gt;getReference('MODCliente\\Entity\\Cliente', 4);\r\n        $idTipoVeiculo = $manager-&gt;getReference(\\MODVeiculo\\Entity\\TipoVeiculo::class, 1);\r\n                \r\n        $veiculo = new Veiculo();\r\n        $veiculo-&gt;setIdCliente($idCliente)\r\n                -&gt;setIdEmpresa($idEmpresa)\r\n                -&gt;setIdTipoVeiculo($idTipoVeiculo)\r\n                -&gt;setTelefone('14998453647')              \r\n                -&gt;setDescricao('TOA TOA 3')\r\n                -&gt;setIdentificacaoPlaca('CCC3333')\r\n                -&gt;setMonitorado(true)\r\n                \/\/-&gt;setImei('111222333444666')\r\n                -&gt;setIcone('carrinho');\r\n        \r\n        $manager-&gt;persist($veiculo);\r\n        $manager-&gt;flush();\r\n    }\r\n}\r\n<\/pre>\n<p>Uma dica muito importante e interessante, se voc\u00ea implementar a &#8220;OrderedFixtureInterface&#8221; voc\u00ea obrigatoriamente vai ter que determinar a sequencia em que as fixtures ser\u00e3o processadas no banco, vamos supor que voc\u00ea tenha depend\u00eancias, no caso vamos supor que voc\u00ea precisa vincular um cliente ao veiculo, sendo assim voc\u00ea precisa ter criado esse cliente antes para relacionar ele ao ve\u00edculo correto? Ent\u00e3o a nossa Fixture de clientes precisa vir antes da Fixture de Veiculos.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Se voc\u00ea pretende utilizar Data Fixtures no seu projeto Zend na vers\u00e3o 3 em diante, voc\u00ea pode utilizar este pacote: Link do pacote no site composer: https:\/\/packagist.org\/packages\/dkorsak\/doctrine-data-fixture-module (Este conte\u00fado fornece uma dica a mais do que esta na documenta\u00e7\u00e3o do pacote) Basta adicionar em seu composer.json na sess\u00e3o &#8220;require&#8221; depois dar um update em seu [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":459,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,13],"tags":[62,64,63,18],"class_list":["post-141","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php","category-zend-framework-3","tag-datafixture","tag-dkorsak","tag-fixture","tag-zend-framework-3","cat-12-id","cat-13-id","has_thumb"],"_links":{"self":[{"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/posts\/141","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/comments?post=141"}],"version-history":[{"count":2,"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/posts\/141\/revisions"}],"predecessor-version":[{"id":143,"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/posts\/141\/revisions\/143"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/media\/459"}],"wp:attachment":[{"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/media?parent=141"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/categories?post=141"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/tags?post=141"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}