{"id":73479,"date":"2024-02-08T19:28:16","date_gmt":"2024-02-08T18:28:16","guid":{"rendered":"https:\/\/kinqsta.com\/es\/?p=73479&#038;preview=true&#038;preview_id=73479"},"modified":"2024-04-22T20:59:35","modified_gmt":"2024-04-22T18:59:35","slug":"laravel-eloquent","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/","title":{"rendered":"Seis cosas que debes saber para dominar Laravel Eloquent"},"content":{"rendered":"<p><a href=\"https:\/\/kinqsta.com\/es\/secciones\/laravel\/\">Laravel<\/a> es un <a href=\"https:\/\/kinqsta.com\/es\/blog\/frameworks-php\/\">framework PHP<\/a> de c\u00f3digo abierto y f\u00e1cil de usar. Una de sus caracter\u00edsticas m\u00e1s potentes es Eloquent, un mapeador objeto-relacional (ORM) que simplifica el manejo de los registros de la base de datos.<\/p>\n<p>Eloquent acelera las operaciones de creaci\u00f3n, lectura, actualizaci\u00f3n y eliminaci\u00f3n en una base de datos desde una aplicaci\u00f3n. Cuando utilizas Eloquent, creas modelos que reflejan las tablas de la base de datos y usas esos modelos para crear tus consultas.<\/p>\n<p>Este art\u00edculo examina seis elementos de la funcionalidad m\u00e1s potente de Eloquent: \u00e1mbitos de consulta, relaciones, mutadores y accesores, colecciones, eliminaci\u00f3n de modelos y factories. Explica lo que hace cada funci\u00f3n mediante ejemplos pr\u00e1cticos. Esperamos que puedas utilizar estos ejemplos para poner en marcha tu dominio de <a href=\"https:\/\/laravel.com\/docs\/10.x\/eloquent\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Eloquent<\/a>.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>1. \u00c1mbitos de consulta de Eloquent<\/h2>\n<p>Cuando construyes una aplicaci\u00f3n, a veces te encuentras con situaciones en las que utilizas condiciones m\u00e1s de una vez. Reescribir el c\u00f3digo en cada caso puede aumentar la probabilidad de errores y hacer que tu c\u00f3digo quede desordenado. Laravel resuelve este problema envolviendo dichas condiciones en sentencias reutilizables llamadas \u00e1mbitos.<\/p>\n<p>Los \u00e1mbitos de consulta son m\u00e9todos para a\u00f1adir l\u00f3gica de base de datos a un modelo y reutilizar la l\u00f3gica de consulta.<\/p>\n<p>A continuaci\u00f3n se muestra un ejemplo de \u00e1mbito de consulta. Sup\u00f3n que quieres crear una plataforma de desarrollo de software para tu equipo que realice un seguimiento de las funciones completadas y en curso. Puedes utilizar esta condici\u00f3n para recuperar s\u00f3lo las funciones en curso:<\/p>\n<pre><code class=\"language-php\">$onGoing = Project::where('ongoing', 1)-&gt;get();<\/code><\/pre>\n<p>Puede que necesites esta condici\u00f3n en otras p\u00e1ginas de la aplicaci\u00f3n, como la p\u00e1gina de estad\u00edsticas. Los \u00e1mbitos de consulta permiten que una p\u00e1gina reutilice la condici\u00f3n anterior, simplificando tu consulta y haciendo que tu c\u00f3digo sea m\u00e1s limpio.<\/p>\n<p>A continuaci\u00f3n te explicamos c\u00f3mo puedes utilizar un \u00e1mbito de consulta para este escenario:<\/p>\n<pre><code class=\"language-php\">class Features extends Model\n{\n    public function scopeOngoing($query)\n    {\n        return $query-&gt;where('ongoing', 0);\n    }\n}<\/code><\/pre>\n<p>A continuaci\u00f3n, utiliza el siguiente c\u00f3digo para ejecutar ese \u00e1mbito:<\/p>\n<pre><code class=\"language-php\">$onGoing = Feature::ongoing()-&gt;get();<\/code><\/pre>\n<p>Hay dos tipos de \u00e1mbitos: global y local.<\/p>\n<h3>\u00c1mbitos globales<\/h3>\n<p>Los \u00e1mbitos globales permiten a\u00f1adir restricciones a todas las consultas de un modelo. Por ejemplo, puedes a\u00f1adir una condici\u00f3n para filtrar caracter\u00edsticas en funci\u00f3n del nombre del jefe de equipo en todas las consultas de tu modelo.<\/p>\n<h3>\u00c1mbitos locales<\/h3>\n<p>Los \u00e1mbitos locales permiten definir restricciones comunes para su reutilizaci\u00f3n. Por ejemplo, puede que quieras que la aplicaci\u00f3n devuelva las caracter\u00edsticas que tienen errores. Tu c\u00f3digo podr\u00eda implementar un \u00e1mbito local como \u00e9ste:<\/p>\n<pre><code class=\"language-php\">namespace AppModels;\nuse IlluminateDatabaseEloquentModel;\n\nclass User extends Model\n{\n    public function scopeBugged($query)\n    {\n        return $query-&gt;where('bugged', '&gt;', 1);\n    }\n}<\/code><\/pre>\n<p>El c\u00f3digo anterior devuelve todas las caracter\u00edsticas que tienen errores no corregidos.<\/p>\n<h2>2. Relaciones en Eloquent<\/h2>\n<p>Las relaciones en Eloquent te permiten relacionar distintas tablas f\u00e1cilmente. Por ejemplo, un producto en un sitio web de comercio electr\u00f3nico puede tener inventario, precio, vistas y opiniones. Con Eloquent, puedes gestionar f\u00e1cilmente estas relaciones aunque sus registros est\u00e9n en tablas diferentes.<\/p>\n<p>Puedes definir las relaciones como m\u00e9todos de las clases del modelo, igual que har\u00edas con un modelo Eloquent. Algunas de las relaciones Eloquent m\u00e1s utilizadas son: uno a uno, inversa y polim\u00f3rfica.<\/p>\n<h3>Uno a uno<\/h3>\n<p>Aqu\u00ed tienes un ejemplo de relaci\u00f3n b\u00e1sica uno a uno que asocia un modelo de producto con un inventario.<\/p>\n<pre><code class=\"language-php\">public function Inventory()\n{\n    return $this-&gt;hasOne('AppInventory');\n}<\/code><\/pre>\n<p>En el c\u00f3digo anterior, el m\u00e9todo <code>Inventory()<\/code> llama al m\u00e9todo <code>hasOne()<\/code> del modelo de producto. \u00c9ste comprueba si el producto est\u00e1 disponible en ese momento.<\/p>\n<h3>Inversa<\/h3>\n<p>Eloquent tambi\u00e9n te permite crear una relaci\u00f3n inversa. Por ejemplo, cuando quieras obtener productos en funci\u00f3n de su n\u00famero de vistas. Las relaciones inversas pueden proporcionarte los productos que suscitan m\u00e1s inter\u00e9s entre los visitantes de un sitio web. Puedes utilizar el m\u00e9todo <code>belongsTo()<\/code>, que es el inverso de <code>hasOne()<\/code>. El siguiente c\u00f3digo lo ilustra.<\/p>\n<pre><code class=\"language-php\">public function product()\n{\n    return $this-&gt;belongsTo('AppProduct');\n}<\/code><\/pre>\n<p>En el c\u00f3digo anterior, Eloquent hace coincidir el <code>product_id<\/code> con el n\u00famero de vistas pasadas. El <code>product_id<\/code> puede entonces ayudar a obtener otros par\u00e1metros, como el precio y el inventario.<\/p>\n<h3>Polim\u00f3rfica<\/h3>\n<p>En el desarrollo de aplicaciones, las relaciones no siempre son sencillas. A veces, tienes un modelo que pertenece a m\u00e1s de un tipo de modelo. Por ejemplo, los modelos de producto e inventario pueden tener relaciones polim\u00f3rficas con un modelo de imagen.<\/p>\n<p>Las <a href=\"https:\/\/kinqsta.com\/es\/blog\/laravel-relaciones\/#polymorphic-relationships\">relaciones polim\u00f3rficas<\/a> te permitir\u00edan utilizar la misma lista de im\u00e1genes tanto para el inventario como para los productos. A continuaci\u00f3n se muestra un fragmento de c\u00f3digo que implementa una relaci\u00f3n polim\u00f3rfica.<\/p>\n<pre><code class=\"language-php\">class Image extends Model\n{\n    \/**\n     * Getting the shared image.\n     *\/\n    public function myimage()\n    {\n        return $this-&gt;morphTo();\n    }\n}\n\nclass Product extends Model\n{\n    \/**\n     * Get the image to use on the product's page.\n     *\/\n    public function image()\n    {\n        return $this-&gt;morphOne(Image::class, 'myimage');\n    }\n}\n\nclass Inventory extends Model\n{\n    \/**\n     * Get the image to use on the inventory page.\n     *\/\n    public function image()\n    {\n        return $this-&gt;morphOne(Image::class, 'myimage');\n    }\n}<\/code><\/pre>\n<p>El c\u00f3digo anterior utiliza el m\u00e9todo <code>morphTo()<\/code> para recuperar la entidad principal del modelo polim\u00f3rfico.<\/p>\n<p>Esto es s\u00f3lo la punta del iceberg sobre este tema. Para saber m\u00e1s, consulta nuestra gu\u00eda avanzada sobre las <a href=\"https:\/\/kinqsta.com\/es\/blog\/laravel-relaciones\/\">relaciones Eloquent de Laravel<\/a>.<\/p>\n<h2>3. Mutadores y accesores Eloquent<\/h2>\n<p>Los mutadores y accesores te permiten alterar los datos mientras los almacenas y recuperas. Los mutadores modifican los datos antes de guardarlos, mientras que los accesores lo hacen al recuperarlos.<\/p>\n<p>Si quieres almacenar nombres en min\u00fasculas en tu base de datos, puedes crear un mutador para ejecutar esa transformaci\u00f3n. Si quieres mostrar el nombre y los apellidos del usuario como un solo nombre en las p\u00e1ginas de tu app, puedes crear un accesor para conseguirlo.<\/p>\n<p>A continuaci\u00f3n se muestra un ejemplo de un mutador que pone los nombres en may\u00fasculas antes de guardarlos.<\/p>\n<pre><code class=\"language-php\">class User extends Model\n{\n    \/**\n     * Mutators capitalizing first and last name.\n     *\/\n    public function setFirstNameAttribute($value)\n    {\n        $this-&gt;attributes['first_name'] = ucfirst($value);\n    }\n\n    public function setLastNameAttribute($value)\n    {\n        $this-&gt;attributes['last_name'] = ucfirst($value);\n    }\n}<\/code><\/pre>\n<p>A continuaci\u00f3n se muestra un ejemplo de un accesor que combina el nombre y los apellidos del usuario.<\/p>\n<pre><code class=\"language-php\">class User extends Model\n{\n    \/**\n     * Accessor combining both names.\n     *\/\n    public function getFullNameAttribute()\n    {\n        return ucfirst($this-&gt;first_name) . ' ' . ucfirst($this-&gt;last_name);\n    }\n}<\/code><\/pre>\n<h2>4. Colecciones de Eloquent<\/h2>\n<p>Las colecciones de Eloquent manejan m\u00e9todos que devuelven m\u00faltiples resultados del modelo. Esta clase se encuentra en <code>IlluminateDatabaseEloquentCollection<\/code>.<\/p>\n<p>Al igual que con los arrays, es posible iterar a trav\u00e9s de las colecciones. A continuaci\u00f3n se muestra una iteraci\u00f3n sencilla.<\/p>\n<pre><code class=\"language-php\">use AppModelsProduct;\n\n$products = Product::where('availability', 1)-&gt;get();\n\nforeach ($products as $product) {\n   echo $product-&gt;name;\n}<\/code><\/pre>\n<p>Las colecciones son m\u00e1s potentes que los arrays porque puedes realizar operaciones m\u00e1s complejas con ellas. Por ejemplo, puedes mostrar la lista de todos los productos disponibles y omitir todos los que no est\u00e9n \u00abactivos\u00bb<\/p>\n<pre><code class=\"language-php\">$names = Product::all()-&gt;reject(function ($product) {\n   return $product-&gt;active === false;\n})-&gt;map(function ($product) {\n   return $product-&gt;name;\n});<\/code><\/pre>\n<p>A continuaci\u00f3n se muestran algunos de los m\u00e9todos que proporciona la clase colecciones.<\/p>\n<h3 id=\"contains\" class=\"has-anchor-hash\">Contains<\/h3>\n<p>El m\u00e9todo <code>contains()<\/code> comprueba si el c\u00f3digo contiene un modo especificado, como se muestra en el c\u00f3digo siguiente:<\/p>\n<pre><code class=\"language-php\">$products-&gt;contains(1);\n$products-&gt;contains(Product::find(1));<\/code><\/pre>\n<h3 id=\"all\" class=\"has-anchor-hash\">All<\/h3>\n<p>El m\u00e9todo <code>all()<\/code> devuelve los modelos contenidos en la colecci\u00f3n, como se muestra a continuaci\u00f3n:<\/p>\n<pre><code class=\"language-php\">$collection = Product::all();<\/code><\/pre>\n<p>La <a href=\"https:\/\/laravel.com\/docs\/9.x\/eloquent-collections\" target=\"blank\" rel=\"noopener\">clase colecciones<\/a> admite muchos otros m\u00e9todos.<\/p>\n<h2>5. Eliminar modelos de Eloquent<\/h2>\n<p>En Eloquent, creas modelos para ayudar a construir consultas. Sin embargo, a veces necesitas eliminar modelos para que una aplicaci\u00f3n sea m\u00e1s eficiente. Para ello, llama a <code>delete<\/code> en la instancia del modelo.<\/p>\n<pre><code class=\"language-php\">use AppModelsStock;\n\n$stock = Stock::find(1);\n$stock-&gt;delete();<\/code><\/pre>\n<p>El c\u00f3digo anterior elimina el modelo <code>Stock<\/code> de una aplicaci\u00f3n. Se trata de una eliminaci\u00f3n permanente que no puede deshacerse.<\/p>\n<h3>Eliminaci\u00f3n suave (Soft delete)<\/h3>\n<p>Otra funci\u00f3n que contiene Eloquent es la capacidad de borrado suave de modelos. Cuando borras suavemente un modelo, no lo eliminas de la base de datos.<\/p>\n<p>Lo marcas utilizando <code>deleted_at<\/code> para indicar la hora y la fecha del borrado suave. Esto es importante cuando quieres excluir una parte de los registros de la base de datos, como los que est\u00e1n incompletos, sin eliminarlos permanentemente. Ayuda a limpiar los resultados de las consultas de Eloquent sin a\u00f1adir condiciones adicionales.<\/p>\n<p>Puedes activar la eliminaci\u00f3n suave a\u00f1adiendo el trait <code>softDeletes<\/code> a un modelo y a\u00f1adiendo una columna <code>deleted_at<\/code> en la tabla de base de datos relacionada.<\/p>\n<h3>A\u00f1adir el borrado suave a un modelo<\/h3>\n<p>Para activar el borrado suave de un modelo, a\u00f1ade el trait <code>IlluminateDatabaseEloquentSoftDeletes<\/code>, como se muestra a continuaci\u00f3n.<\/p>\n<pre><code class=\"language-php\">namespace AppModels;\nuse IlluminateDatabaseEloquentModel;\nuse IlluminateDatabaseEloquentSoftDeletes;\n\nclass Flight extends Model\n{\n   use SoftDeletes;\n}<\/code><\/pre>\n<h3>C\u00f3mo a\u00f1adir una columna delete_at<\/h3>\n<p>Antes de que puedas empezar a utilizar el borrado suave, tu base de datos debe tener una columna <code>delete_at<\/code>. A\u00f1ade esta columna utilizando un m\u00e9todo de ayuda del constructor de Laravel <code>Schema<\/code>, como se muestra a continuaci\u00f3n:<\/p>\n<pre><code class=\"language-php\">use IlluminateDatabaseSchemaBlueprint;\nuse IlluminateSupportFacadesSchema;\n\nSchema::table('users', function (Blueprint $table) {\n   $table-&gt;softDeletes();\n});\n\nSchema::table('users', function (Blueprint $table) {\n   $table-&gt;dropSoftDeletes();\n});<\/code><\/pre>\n<p>Esto a\u00f1ade una columna <code>delete_at<\/code> que se actualiza con la fecha y la hora, en caso de que una acci\u00f3n de borrado suave tenga \u00e9xito.<\/p>\n<h3>C\u00f3mo incluir modelos con borrado suave<\/h3>\n<p>Si quieres que los resultados de la consulta incluyan modelos con borrado suave, debes a\u00f1adir el m\u00e9todo <code>withTrashed()<\/code> a la consulta. A continuaci\u00f3n se muestra un ejemplo:<\/p>\n<pre><code class=\"language-php\">$stocks = Stock::withTrashed()-&gt;where('stock_id', 20)-&gt;get();<\/code><\/pre>\n<p>La consulta anterior tambi\u00e9n incluir\u00e1 los modelos con el atributo <code>deleted_at<\/code>.<\/p>\n<h3>C\u00f3mo recuperar \u00fanicamente modelos con borrado suave<\/h3>\n<p>Eloquent tambi\u00e9n permite recuperar exclusivamente modelos con borrado suave. Puedes hacerlo llamando al m\u00e9todo <code>onlyTrashed()<\/code>, por ejemplo:<\/p>\n<pre><code class=\"language-php\">$Stock = Stock::onlyTrashed()-&gt;where('stock_id', 1)-&gt;get();<\/code><\/pre>\n<h3>C\u00f3mo restaurar modelos con borrado suave<\/h3>\n<p>Tambi\u00e9n puedes restaurar los modelos borrados en pantalla llamando al m\u00e9todo <code>restore()<\/code>.<\/p>\n<pre><code class=\"language-php\">$stocks = Stock::withTrashed()-&gt;where('stock_id', 20)-&gt;restore();<\/code><\/pre>\n<p>Esto cambia el campo <code>delete_at<\/code> de un modelo con borrado suave a null. Si el modelo no ha sido borrado suavemente, deja el campo sin cambios.<\/p>\n<h2>6. Eloquent Factories<\/h2>\n<p>Las Factories de modelos en Laravel crean datos ficticios que puedes usar para probar tu aplicaci\u00f3n o para sembrar tu base de datos. Para implementar esto, creas un modelo en una clase Factory, como se muestra en el ejemplo a continuaci\u00f3n. El fragmento de c\u00f3digo crea una factory de modelo que puede generar proveedores ficticios de un producto y sus precios.<\/p>\n<pre><code class=\"language-php\">namespace DatabaseFactories;\nuse IlluminateDatabaseEloquentFactoriesFactory;\nuse IlluminateSupportStr;\n\nclass StockFactory extends Factory\n{\n    public function definition()\n    {\n        return [\n            'supplier_name' =&gt; fake()-&gt;name(),\n            'price' =&gt; fake()-&gt;numberBetween($min = 1500, $max = 6000),\n        ];\n    }\n}<\/code><\/pre>\n<p>El m\u00e9todo <code>definition()<\/code> del ejemplo anterior devuelve un conjunto de valores de atributos que Laravel utiliza al construir el modelo. El ayudante fake facilita que la factory acceda a la biblioteca de PHP, <a href=\"https:\/\/fakerphp.github.io\/\">Faker<\/a>.<\/p>\n<h2 id=\"h.kvdd4m1lmda5\">Resumen<\/h2>\n<p>Eloquent simplifica las tareas de desarrollo de aplicaciones en Laravel. Es igual de eficaz a la hora de construir consultas simples o complejas, gracias a implementaciones como las relaciones. La sencillez de generar datos ficticios funcionales mediante factories lo hace perfecto para los desarrolladores que quieren crear pruebas robustas para sus aplicaciones. Adem\u00e1s, los \u00e1mbitos de Eloquent ayudan a simplificar las consultas complejas de forma que el c\u00f3digo quede ordenado.<\/p>\n<p>Aunque este art\u00edculo s\u00f3lo ha abordado seis de sus principales caracter\u00edsticas, Eloquent tiene otras potentes funcionalidades. El uso de modelos compartibles y reutilizables ha hecho de Eloquent una caracter\u00edstica popular entre los desarrolladores, y la simplicidad de las consultas de Eloquent hace de Laravel un framework f\u00e1cil de usar para los desarrolladores, incluso para los principiantes.<\/p>\n<p>Sea cual sea tu nivel de experiencia, la plataforma de <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Alojamiento de Aplicaciones web<\/a> de Kinsta apoya a desarrolladores como t\u00fa. Nuestra <a href=\"https:\/\/docs.sevalla.com\/templates\/overviewphp-examples#laravel\">plantilla de inicio r\u00e1pido de Laravel<\/a> muestra lo f\u00e1cil que es poner en marcha tu aplicaci\u00f3n en nuestros servidores dentro de la <a href=\"https:\/\/kinqsta.com\/es\/blog\/plataforma-en-la-nube-para-desarrolladores\/\">red de nivel premium<\/a> de Google Cloud.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Laravel es un framework PHP de c\u00f3digo abierto y f\u00e1cil de usar. Una de sus caracter\u00edsticas m\u00e1s potentes es Eloquent, un mapeador objeto-relacional (ORM) que simplifica &#8230;<\/p>\n","protected":false},"author":259,"featured_media":73480,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1303],"class_list":["post-73479","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-laravel"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Seis cosas que necesitas saber para dominar Laravel Eloquent - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Mejora tus habilidades en Laravel con los \u00e1mbitos de consulta, las relaciones, los mutadores y accesorios, las colecciones, la eliminaci\u00f3n de modelos y las f\u00e1bricas de Eloquent.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Seis cosas que debes saber para dominar Laravel Eloquent\" \/>\n<meta property=\"og:description\" content=\"Mejora tus habilidades en Laravel con los \u00e1mbitos de consulta, las relaciones, los mutadores y accesorios, las colecciones, la eliminaci\u00f3n de modelos y las f\u00e1bricas de Eloquent.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinsta.es\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-08T18:28:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-22T18:59:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/02\/master-laravel-eloquent.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Steve Bonisteel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Mejora tus habilidades en Laravel con los \u00e1mbitos de consulta, las relaciones, los mutadores y accesorios, las colecciones, la eliminaci\u00f3n de modelos y las f\u00e1bricas de Eloquent.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/02\/master-laravel-eloquent.png\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Steve Bonisteel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/\"},\"author\":{\"name\":\"Steve Bonisteel\",\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\"},\"headline\":\"Seis cosas que debes saber para dominar Laravel Eloquent\",\"datePublished\":\"2024-02-08T18:28:16+00:00\",\"dateModified\":\"2024-04-22T18:59:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/\"},\"wordCount\":1764,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/02\/master-laravel-eloquent.png\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/\",\"url\":\"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/\",\"name\":\"Seis cosas que necesitas saber para dominar Laravel Eloquent - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/02\/master-laravel-eloquent.png\",\"datePublished\":\"2024-02-08T18:28:16+00:00\",\"dateModified\":\"2024-04-22T18:59:35+00:00\",\"description\":\"Mejora tus habilidades en Laravel con los \u00e1mbitos de consulta, las relaciones, los mutadores y accesorios, las colecciones, la eliminaci\u00f3n de modelos y las f\u00e1bricas de Eloquent.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/02\/master-laravel-eloquent.png\",\"contentUrl\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/02\/master-laravel-eloquent.png\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinqsta.com\/es\/secciones\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Seis cosas que debes saber para dominar Laravel Eloquent\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/es\/#website\",\"url\":\"https:\/\/kinqsta.com\/es\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluciones de alojamiento premium, r\u00e1pidas y seguras\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/es\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinsta.es\/\",\"https:\/\/x.com\/Kinsta_ES\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\",\"name\":\"Steve Bonisteel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"caption\":\"Steve Bonisteel\"},\"description\":\"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.\",\"url\":\"https:\/\/kinqsta.com\/es\/blog\/author\/stevebonisteel\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Seis cosas que necesitas saber para dominar Laravel Eloquent - Kinsta\u00ae","description":"Mejora tus habilidades en Laravel con los \u00e1mbitos de consulta, las relaciones, los mutadores y accesorios, las colecciones, la eliminaci\u00f3n de modelos y las f\u00e1bricas de Eloquent.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/","og_locale":"es_ES","og_type":"article","og_title":"Seis cosas que debes saber para dominar Laravel Eloquent","og_description":"Mejora tus habilidades en Laravel con los \u00e1mbitos de consulta, las relaciones, los mutadores y accesorios, las colecciones, la eliminaci\u00f3n de modelos y las f\u00e1bricas de Eloquent.","og_url":"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2024-02-08T18:28:16+00:00","article_modified_time":"2024-04-22T18:59:35+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/02\/master-laravel-eloquent.png","type":"image\/png"}],"author":"Steve Bonisteel","twitter_card":"summary_large_image","twitter_description":"Mejora tus habilidades en Laravel con los \u00e1mbitos de consulta, las relaciones, los mutadores y accesorios, las colecciones, la eliminaci\u00f3n de modelos y las f\u00e1bricas de Eloquent.","twitter_image":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/02\/master-laravel-eloquent.png","twitter_creator":"@Kinsta_ES","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Steve Bonisteel","Tiempo de lectura":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/"},"author":{"name":"Steve Bonisteel","@id":"https:\/\/kinqsta.com\/es\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f"},"headline":"Seis cosas que debes saber para dominar Laravel Eloquent","datePublished":"2024-02-08T18:28:16+00:00","dateModified":"2024-04-22T18:59:35+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/"},"wordCount":1764,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/02\/master-laravel-eloquent.png","inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/","url":"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/","name":"Seis cosas que necesitas saber para dominar Laravel Eloquent - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinqsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/02\/master-laravel-eloquent.png","datePublished":"2024-02-08T18:28:16+00:00","dateModified":"2024-04-22T18:59:35+00:00","description":"Mejora tus habilidades en Laravel con los \u00e1mbitos de consulta, las relaciones, los mutadores y accesorios, las colecciones, la eliminaci\u00f3n de modelos y las f\u00e1bricas de Eloquent.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/#primaryimage","url":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/02\/master-laravel-eloquent.png","contentUrl":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/02\/master-laravel-eloquent.png","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/es\/blog\/laravel-eloquent\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinqsta.com\/es\/secciones\/laravel\/"},{"@type":"ListItem","position":3,"name":"Seis cosas que debes saber para dominar Laravel Eloquent"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/es\/#website","url":"https:\/\/kinqsta.com\/es\/","name":"Kinsta\u00ae","description":"Soluciones de alojamiento premium, r\u00e1pidas y seguras","publisher":{"@id":"https:\/\/kinqsta.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/es\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinqsta.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinsta.es\/","https:\/\/x.com\/Kinsta_ES","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinqsta.com\/es\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f","name":"Steve Bonisteel","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinqsta.com\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","caption":"Steve Bonisteel"},"description":"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.","url":"https:\/\/kinqsta.com\/es\/blog\/author\/stevebonisteel\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/posts\/73479","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/users\/259"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/comments?post=73479"}],"version-history":[{"count":6,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/posts\/73479\/revisions"}],"predecessor-version":[{"id":74678,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/posts\/73479\/revisions\/74678"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/73479\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/73479\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/73479\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/73479\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/73479\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/73479\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/73479\/translations\/es"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/73479\/translations\/nl"},{"href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/73479\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/media\/73480"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/media?parent=73479"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/tags?post=73479"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/topic?post=73479"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}