{"id":4070,"date":"2017-12-11T10:35:01","date_gmt":"2017-12-11T13:35:01","guid":{"rendered":"http:\/\/blog.dialhost.com.br\/?p=4070"},"modified":"2019-10-02T18:33:37","modified_gmt":"2019-10-02T21:33:37","slug":"eloquent-no-laravel-aprofundando","status":"publish","type":"post","link":"https:\/\/www.dialhost.com.br\/blog\/eloquent-no-laravel-aprofundando\/","title":{"rendered":"Eloquent no Laravel: Como aprofundar em 9 novas fun\u00e7\u00f5es"},"content":{"rendered":"\n<p>O Eloquent no Laravel permite muito mais do que apenas simplificar o trabalho em bancos de dados com as suas models. Aprenda um pouco mais sobre novas fun\u00e7\u00f5es que tamb\u00e9m conseguimos desenvolver com o Eloquent<\/p>\n\n\n\n<div id=\"toc_container\" class=\"have_bullets\"><p class=\"toc_title\">T&oacute;picos<\/p><ul class=\"toc_list\"><li><a href=\"#1-8211-findorfail\">1 &#8211; findOrFail<\/a><\/li><li><a href=\"#2-8211-firstorfail\">2 &#8211; firstOrFail<\/a><\/li><li><a href=\"#3-8211-otimizando-o-uso-de-memoria-com-chunk\">3 &#8211; Otimizando o uso de mem\u00f3ria com Chunk<\/a><\/li><li><a href=\"#4-8211-otimizando-o-uso-de-memoria-com-cursor\">4 &#8211; Otimizando o uso de mem\u00f3ria com Cursor<\/a><\/li><li><a href=\"#5-8211-mass-update-com-eloquent-no-laravel\">5 &#8211; Mass Update com Eloquent no Laravel<\/a><\/li><li><a href=\"#6-8211-firstorcreate\">6 &#8211; firstOrCreate<\/a><\/li><li><a href=\"#7-8211-firstornew\">7 &#8211; firstOrNew<\/a><\/li><li><a href=\"#8-8211-updateorcreate\">8 &#8211; updateOrCreate<\/a><\/li><li><a href=\"#9-8211-softdelete-com-eloquent-no-laravel\">9 &#8211; SoftDelete com Eloquent no Laravel<\/a><\/li><li><a href=\"#conclusao\">Conclus\u00e3o<\/a><\/li><\/ul><\/div>\n<h2><span id=\"1-8211-findorfail\">1 &#8211; findOrFail<\/span><\/h2>\n\n\n\n<p>A fun\u00e7\u00e3o findOrFail trata exce\u00e7\u00f5es nas buscas do banco de dados. Utilizando como exemplo o que fizemos em outro <a rel=\"noreferrer noopener\" aria-label=\"artigo (abre numa nova aba)\" href=\"https:\/\/www.dialhost.com.br\/blog\/eloquent-simplificando-models-laravel\/\" target=\"_blank\">artigo<\/a> deste blog, ao fazermos uma busca pelo id do produto utilizando o findOFail($id), ele retornava uma cole\u00e7\u00e3o com os resultados da busca ou dispararia um erro 404 se nenhum resultado fosse encontrado.<\/p>\n\n\n\n<p>Ele \u00e9 um m\u00e9todo bem \u00fatil para tratarmos os resultados de Rotas ou Controllers que necessitam do resultado desta busca para funcionar.<\/p>\n\n\n<p>[php]public function show($id){<br \/>\nProduct::findOrFail($id);<br \/>\n}<\/p>\n<p>[\/php]<\/p>\n\n\n\n<h2><span id=\"2-8211-firstorfail\">2 &#8211; firstOrFail<\/span><\/h2>\n\n\n\n<p>Este m\u00e9todo do Eloquent no Laravel \u00e9 semelhante ao <a href=\"https:\/\/www.dialhost.com.br\/blog\/eloquent-no-laravel-aprofundando\/#1-8211-findorfail\">anterior<\/a>. Por\u00e9m, ele limitar\u00e1 a busca apenas ao primeiro resultado obtido. Ele  \u00e9 \u00fatil para fazer uma busca mais ampla e mesmo assim trazer apenas um resultado.<\/p>\n\n\n<p>[php]public function show($id){<br \/>\nProduct::where(&#8216;price&#8217;,&#8217;&gt;&#8217;,3.5)-&gt;firstOrFail();<br \/>\n}<\/p>\n<p>[\/php]<\/p>\n\n\n\n<h2><span id=\"3-8211-otimizando-o-uso-de-memoria-com-chunk\">3 &#8211; Otimizando o uso de mem\u00f3ria com Chunk<\/span><\/h2>\n\n\n\n<p>Ao fazer buscas podemos nos deparar com resultados gigantescos dependendo da tabela que consultamos. Estas consultas podem demorar para trazer um retorno e consumir muita mem\u00f3ria.<\/p>\n\n\n\n<p>Para resolver este problema o Eloquent possui a fun\u00e7\u00e3o chunk. \u00c9 ela que faz a quebra desta consulta em peda\u00e7os menores. Assim, o PHP processar\u00e1 centenas de milhares de registros sem estourar o seu uso de mem\u00f3ria.<\/p>\n\n\n<p>[php]Product::chunk(200, function ($products) {<br \/>\nforeach ($products as $product) {<br \/>\n\/\/ Fa\u00e7a o qualquer coisa que voc\u00ea queira com este dado.<br \/>\n}<br \/>\n});<\/p>\n<p>[\/php]<\/p>\n\n\n\n<p>No exemplo acima, temos dois par\u00e2metros sendo passados. O primeiro \u00e9 o limite de resultados que cada bloco ir\u00e1 trabalhar. O segundo \u00e9 o que ser\u00e1 executado para cada resultado de cada bloco da consulta. <\/p>\n\n\n\n<p>Podemos dizer que ele otimiza a consulta colocando um limite de resultados e fazendo um foreach autom\u00e1tico at\u00e9 que todos os resultados da consulta sejam processados.<\/p>\n\n\n\n<h2><span id=\"4-8211-otimizando-o-uso-de-memoria-com-cursor\">4 &#8211; Otimizando o uso de mem\u00f3ria com Cursor<\/span><\/h2>\n\n\n\n<p>Ainda para otimiza\u00e7\u00e3o de buscas temos o m\u00e9todo cursor. Ele tem uma aplica\u00e7\u00e3o semelhante. Neste caso, por\u00e9m, ele trabalhar\u00e1 com apenas uma query. A otimiza\u00e7\u00e3o aqui fica por conta do retorno que a fun\u00e7\u00e3o cursor tem. Ela retornar\u00e1 um <a href=\"http:\/\/php.net\/manual\/en\/language.generators.overview.php\" target=\"_blank\" rel=\"noreferrer noopener\">Generator<\/a>.<\/p>\n\n\n\n<p>Um generator permite que escrevamos um c\u00f3digo que utiliza foreach para interagir com um conjunto de informa\u00e7\u00f5es sem precisar de registrar um array na mem\u00f3ria. Assim, diminui-se o risco risco de estourarmos a mem\u00f3ria em um processamento grande de dados.<\/p>\n\n\n\n<p>Para usar esta fun\u00e7\u00e3o fazemos como abaixo:<\/p>\n\n\n<p>[php]foreach (Product::where(&#8216;price&#8217;,3.5)-&gt;cursor() as $product) {<br \/>\n\/\/ Fa\u00e7a o qualquer coisa que voc\u00ea queira com este dado.<br \/>\n}<\/p>\n<p>[\/php]<\/p>\n\n\n\n<h2><span id=\"5-8211-mass-update-com-eloquent-no-laravel\">5 &#8211; Mass Update com Eloquent no Laravel<\/span><\/h2>\n\n\n\n<p>No exemplo do outro <a rel=\"noreferrer noopener\" href=\"https:\/\/www.dialhost.com.br\/blog\/eloquent-simplificando-models-laravel\/\" target=\"_blank\">artigo<\/a> deste blog, mostramos como fazer um update de um registro em espec\u00edfico. Mas, podemos atualizar diversos registros que contemplam uma condi\u00e7\u00e3o passada.<\/p>\n\n\n\n<p>Para isso usamos o comando update. Com esta fun\u00e7\u00e3o o Eloquent atualizar\u00e1 o campo passado em todos os resultados da busca que voc\u00ea fizer antes.<\/p>\n\n\n<p>[php]Product::where(&#8216;product_line_id&#8217;, 1)<br \/>\n-&gt;update([&#8216;product_line_id&#8217; =&gt; 2]);<\/p>\n<p>[\/php]<\/p>\n\n\n\n<h2><span id=\"6-8211-firstorcreate\">6 &#8211; firstOrCreate<\/span><\/h2>\n\n\n\n<p>O <em>firstOrCreate<\/em> far\u00e1 a cria\u00e7\u00e3o de um registro, mas primeiro ele validar\u00e1 se o registro j\u00e1 existe no banco. Se o registro j\u00e1 existir teremos apenas o retorno do mesmo. Sen\u00e3o, ele criar\u00e1 o registro.<\/p>\n\n\n\n<p>Como fica claro, este comando s\u00f3 ser\u00e1 \u00fatil para criar dados \u00fanicos. No nosso exemplo do outro <a rel=\"noreferrer noopener\" href=\"https:\/\/www.dialhost.com.br\/blog\/eloquent-simplificando-models-laravel\/\" target=\"_blank\">artigo<\/a> isto seria interessante para o <em>product line<\/em>, j\u00e1 que n\u00e3o queremos que exista mais de uma linha de produtos com o mesmo nome.<\/p>\n\n\n<p>[php] $productLine = Product_line::firstOrCreate([&#8216;description&#8217; =&gt; &#8216;salgados&#8217;]);<\/p>\n<p>[\/php]<\/p>\n\n\n\n<h2><span id=\"7-8211-firstornew\">7 &#8211; firstOrNew<\/span><\/h2>\n\n\n\n<p>Assim como o <em><a href=\"https:\/\/www.dialhost.com.br\/blog\/eloquent-no-laravel-aprofundando\/#6-8211-firstorcreate\">firstOrCreate<\/a><\/em> o <em><a href=\"https:\/\/www.dialhost.com.br\/blog\/eloquent-no-laravel-aprofundando\/#7-8211-firstornew\">firstOrNew<\/a><\/em><a href=\"https:\/\/www.dialhost.com.br\/blog\/eloquent-no-laravel-aprofundando\/#7-8211-firstornew\"> <\/a>do <strong>Eloquent<\/strong>, este comando tentar\u00e1 encontrar um registro j\u00e1 existente do par\u00e2metro que passarmos. A diferen\u00e7a \u00e9 que ele n\u00e3o salvar\u00e1 o registro no banco de dados, mas sim, instanciar\u00e1 um novo model com este registro. <\/p>\n\n\n\n<p>Assim, para salvar realmente no banco ser\u00e1 necess\u00e1rio executar o comando <em>&#8220;save&#8221;.<\/em><\/p>\n\n\n<p>[php] $productLine = Product_line::firstOrCreate([&#8216;description&#8217; =&gt; &#8216;salgados&#8217;]);<\/p>\n<p>[\/php]<\/p>\n\n\n\n<h2><span id=\"8-8211-updateorcreate\">8 &#8211; updateOrCreate<\/span><\/h2>\n\n\n\n<p>Mais uma vez, a fun\u00e7\u00e3o updateOrCreate buscar\u00e1 um registro existente do par\u00e2metro que passamos. Mas, como diz o nome da fun\u00e7\u00e3o aqui ele vai atualizar\u00e1 o valor ou criar o novo registro no banco de dados. <\/p>\n\n\n\n<p>Esta fun\u00e7\u00e3o se torna \u00fatil para uma edi\u00e7\u00e3o for\u00e7ada onde mesmo que o registro exista, voc\u00ea queira atualizar um par\u00e2metro vinculado a ele.<\/p>\n\n\n<p>[php] $units= Units::updateOrCreate([&#8216;description&#8217; =&gt; &#8216;kilogramas&#8217;],[&#8216;abbreviation&#8217; =&gt;&#8217;kg&#8217;]);<\/p>\n<p>[\/php]<\/p>\n\n\n\n<p>O primeiro par\u00e2metro ser\u00e1 o campo que faremos a busca. Caso a consulta retorne um valor, o sistema atualizar\u00e1 o campo <em>abbreviation. <\/em>Caso n\u00e3o encontre, o mesmo criar\u00e1 um registro novo com a <em>description\u00a0<\/em>&#8220;Kilogramas&#8221; e setar\u00e1 a\u00a0<em>abbreviation\u00a0<\/em>como &#8220;Kg&#8221;.<\/p>\n\n\n\n<h2><span id=\"9-8211-softdelete-com-eloquent-no-laravel\">9 &#8211; SoftDelete com Eloquent no Laravel<\/span><\/h2>\n\n\n\n<p>No\u00a0<em>Soft Delete<\/em>\u00a0seus dados n\u00e3o ser\u00e3o deletados realmente, eles apenas ter\u00e3o setados um campo deleted_at sempre que for executada uma a\u00e7\u00e3o de delete().<\/p>\n\n\n\n<p>Para isto funcionar, primeiramente temos que setar em nossa <em>migration schema<\/em> o campo softDeletes.<\/p>\n\n\n\n<p>Lembra do c\u00f3digo abaixo? (Tudo bem se n\u00e3o lembrar, basta conferir o post <a rel=\"noreferrer noopener\" href=\"http:\/\/blog.dialhost.com.br\/desenvolvimento-2\/migrations-relacionando-tabelas-laravel\/\" target=\"_blank\">Criando migrations com o Laravel 5.5<\/a>)<\/p>\n\n\n\n<p>Adicionamos ao final o campo softDeletes.<\/p>\n\n\n<p>[php]class create_product extends Migration<br \/>\n{<br \/>\npublic function up() {<br \/>\nSchema::create(&#8216;product&#8217;, function (Blueprint $table) {<br \/>\n$table-&gt;smallIncrements(&#8216;id&#8217;);<br \/>\n$table-&gt;string(&#8216;description&#8217;)-&gt;unique();<br \/>\n$table-&gt;string(&#8216;expiration_date&#8217;);<br \/>\n$table-&gt;decimal(&#8216;price&#8217;, 5, 2);<br \/>\n$table-&gt;timestamps();<br \/>\n$table-&gt;softDeletes(); \/\/ADICIONEI AQUI&nbsp; O SOFTDELETE<br \/>\n$table-&gt;engine = &#8216;InnoDB&#8217;;<br \/>\n});<br \/>\n}<\/p>\n<p>[\/php]<\/p>\n\n\n\n<p>Agora precisamos setar nossa model para trabalhar com softDelete. Para isto chamaremos a classe&nbsp; <strong>SoftDeletes<\/strong> para usarmos, e criaremos uma vari\u00e1vel <em><strong>$dates<\/strong><\/em><\/p>\n\n\n<p>[php] use Illuminate\\Database\\Eloquent\\SoftDeletes;<\/p>\n<p>class Product extends Model {<br \/>\nuse SoftDeletes;<br \/>\nprotected $fillable = [&#8216;description&#8217;,&#8217;expiration_time&#8217;,&#8217;price&#8217;,&#8217;product_line_id&#8217;];<br \/>\nprotected $dates = [&#8216;deleted_at&#8217;];<\/p>\n<p>public function product_line(){<br \/>\nreturn $this-&gt;belongsTo(Product_line::Class);<br \/>\n}<br \/>\n}<\/p>\n<p>[\/php]<\/p>\n\n\n\n<p>Com tudo isto configurado, agora toda vez que voc\u00ea executar a fun\u00e7\u00e3o <strong>delete()<\/strong> do <strong>Eloquent\u00a0<\/strong>ela definir\u00e1 a coluna <strong>deleted_at <\/strong>com a data e hora do momento da exclus\u00e3o.<\/p>\n\n\n\n<p>Por fim, ficou bem f\u00e1cil caso queira restaurar este dado. Basta executar a fun\u00e7\u00e3o <strong>restore() <\/strong>do<strong> Eloquent<\/strong>\u00a0como abaixo.<\/p>\n\n\n<p>[php]$product = Product::onlyTrashed()<br \/>\n-&gt;where(&#8216;product_id&#8217;, 1)<br \/>\n-&gt;get();<\/p>\n<p>$product-&gt;restore();<\/p>\n<p>[\/php]<\/p>\n\n\n\n<h2><span id=\"conclusao\">Conclus\u00e3o<\/span><\/h2>\n\n\n\n<p>O Eloquent tem diversas fun\u00e7\u00f5es para facilitar e diminuir o seu trabalho com aquelas tarefas usuais em banco de dados.  Mas se voc\u00ea quiser aprender mais, basta clicar no link a seguir para conferir onde j\u00e1 falamos sobre o <strong><a rel=\"noreferrer noopener\" aria-label=\" (abre numa nova aba)\" href=\"https:\/\/www.dialhost.com.br\/blog\/eloquent-simplificando-models-laravel\/\" target=\"_blank\">Eloquent<\/a><\/strong><a rel=\"noreferrer noopener\" aria-label=\" (abre numa nova aba)\" href=\"https:\/\/www.dialhost.com.br\/blog\/eloquent-simplificando-models-laravel\/\" target=\"_blank\"> no Laravel<\/a> e como ele pode simplificar o trabalho das models com os bancos de dados. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>O Eloquent no Laravel permite muito mais do que apenas simplificar o trabalho em bancos de dados com as suas models. Aprenda um pouco mais sobre novas fun\u00e7\u00f5es que tamb\u00e9m conseguimos desenvolver com o Eloquent T&oacute;picos1 &#8211; findOrFail2 &#8211; firstOrFail3 &#8211; Otimizando o uso de mem\u00f3ria com Chunk4 &#8211; Otimizando o uso de mem\u00f3ria com &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.dialhost.com.br\/blog\/eloquent-no-laravel-aprofundando\/\" class=\"more-link\">Continue lendo<span class=\"screen-reader-text\"> &#8220;Eloquent no Laravel: Como aprofundar em 9 novas fun\u00e7\u00f5es&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":7595,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[23,24,12],"tags":[76,138],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v15.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Eloquent no Laravel: Como aprofundar em 9 novas fun\u00e7\u00f5es - Blog DialHost<\/title>\n<meta name=\"description\" content=\"Aprofude o Eloquent no Laravel conhecendo as fun\u00e7\u00f5es findOrFail, firstOrFail,\u00a0chunk, cursor,\u00a0update, firstOrCreate, softDelete e muito mais.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dialhost.com.br\/blog\/eloquent-no-laravel-aprofundando\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Eloquent no Laravel: Como aprofundar em 9 novas fun\u00e7\u00f5es - Blog DialHost\" \/>\n<meta property=\"og:description\" content=\"Aprofude o Eloquent no Laravel conhecendo as fun\u00e7\u00f5es findOrFail, firstOrFail,\u00a0chunk, cursor,\u00a0update, firstOrCreate, softDelete e muito mais.\" \/>\n<meta property=\"og:url\" content=\"\/blog\/eloquent-no-laravel-aprofundando\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog DialHost\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/DialHost\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/DialHost\" \/>\n<meta property=\"article:published_time\" content=\"2017-12-11T13:35:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-10-02T21:33:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dialhost.com.br\/blog\/wp-content\/uploads\/2017\/12\/eloquent-laravel.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1400\" \/>\n\t<meta property=\"og:image:height\" content=\"520\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dialhost\" \/>\n<meta name=\"twitter:site\" content=\"@dialhost\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#organization\",\"name\":\"DialHost Internet\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/\",\"sameAs\":[\"http:\/\/www.facebook.com\/DialHost\",\"https:\/\/www.instagram.com\/dialhost_oficial\/\",\"https:\/\/www.linkedin.com\/company\/dialhost-internet\",\"https:\/\/www.youtube.com\/channel\/UCAiqiX8IiqTSfA8wQhpzgXQ\",\"https:\/\/twitter.com\/dialhost\"],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#logo\",\"inLanguage\":\"pt-BR\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/wp-content\/uploads\/2019\/03\/marca-dialhost.png\",\"width\":81,\"height\":81,\"caption\":\"DialHost Internet\"},\"image\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#website\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/\",\"name\":\"Blog DialHost\",\"description\":\"Os melhores conte\\u00fados sobre Desenvolvimento Web, Marketing e Neg\\u00f3cios\",\"publisher\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/www.dialhost.com.br\/blog\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/eloquent-no-laravel-aprofundando\/#primaryimage\",\"inLanguage\":\"pt-BR\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/wp-content\/uploads\/2017\/12\/eloquent-laravel.png\",\"width\":1400,\"height\":520,\"caption\":\"\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/eloquent-no-laravel-aprofundando\/#webpage\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/eloquent-no-laravel-aprofundando\/\",\"name\":\"Eloquent no Laravel: Como aprofundar em 9 novas fun\\u00e7\\u00f5es - Blog DialHost\",\"isPartOf\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/eloquent-no-laravel-aprofundando\/#primaryimage\"},\"datePublished\":\"2017-12-11T13:35:01+00:00\",\"dateModified\":\"2019-10-02T21:33:37+00:00\",\"description\":\"Aprofude o Eloquent no Laravel conhecendo as fun\\u00e7\\u00f5es findOrFail, firstOrFail,\\u00a0chunk, cursor,\\u00a0update, firstOrCreate, softDelete e muito mais.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/eloquent-no-laravel-aprofundando\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dialhost.com.br\/blog\/eloquent-no-laravel-aprofundando\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/eloquent-no-laravel-aprofundando\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"\/blog\/\",\"url\":\"\/blog\/\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"\/blog\/eloquent-no-laravel-aprofundando\/\",\"url\":\"\/blog\/eloquent-no-laravel-aprofundando\/\",\"name\":\"Eloquent no Laravel: Como aprofundar em 9 novas fun\\u00e7\\u00f5es\"}}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/eloquent-no-laravel-aprofundando\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/eloquent-no-laravel-aprofundando\/#webpage\"},\"author\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#\/schema\/person\/a0b10cbe35449dea173a06d4664f9fcc\"},\"headline\":\"Eloquent no Laravel: Como aprofundar em 9 novas fun\\u00e7\\u00f5es\",\"datePublished\":\"2017-12-11T13:35:01+00:00\",\"dateModified\":\"2019-10-02T21:33:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/eloquent-no-laravel-aprofundando\/#webpage\"},\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/eloquent-no-laravel-aprofundando\/#primaryimage\"},\"keywords\":\"desenvolvimento,laravel\",\"articleSection\":\"Laravel,PHP,Tecnologias\",\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dialhost.com.br\/blog\/eloquent-no-laravel-aprofundando\/#respond\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#\/schema\/person\/a0b10cbe35449dea173a06d4664f9fcc\",\"name\":\"DialHost Internet\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#personlogo\",\"inLanguage\":\"pt-BR\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/05feec2f99aef1c42b09aeaa637ee66f?s=96&r=g\",\"caption\":\"DialHost Internet\"},\"description\":\"H\\u00e1 mais de 18 anos proporcionando um servi\\u00e7o de hospedagem de sites voltado 100% na Experi\\u00eancia e Sucesso do Cliente, prezando a qualidade, transpar\\u00eancia e seguran\\u00e7a.\",\"sameAs\":[\"https:\/\/www.facebook.com\/DialHost\",\"https:\/\/www.instagram.com\/dialhost_oficial\/\",\"https:\/\/www.linkedin.com\/company\/dialhost-internet\",\"https:\/\/twitter.com\/dialhost\",\"https:\/\/www.youtube.com\/channel\/UCAiqiX8IiqTSfA8wQhpzgXQ\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/posts\/4070"}],"collection":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/comments?post=4070"}],"version-history":[{"count":1,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/posts\/4070\/revisions"}],"predecessor-version":[{"id":10091,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/posts\/4070\/revisions\/10091"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/media\/7595"}],"wp:attachment":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/media?parent=4070"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/categories?post=4070"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/tags?post=4070"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}