Herramientas de usuario

Herramientas del sitio


informatica:programacion:php:frameworks:laravel:convenciones

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:programacion:php:frameworks:laravel:convenciones [2025/03/09 10:44] – [Tablas Pivote] tempwininformatica:programacion:php:frameworks:laravel:convenciones [2025/03/09 10:50] (actual) – [Columnas en Snake Case] tempwin
Línea 49: Línea 49:
 | ''Post'' y ''Tag''     | ''post_tag''    | ''Post'' y ''Tag''     | ''post_tag''   
  
-===== Claves primarias =====+==== Claves primarias ====
  
 Por defecto, Laravel espera una columna llamada ''id'' como clave primaria. Por defecto, Laravel espera una columna llamada ''id'' como clave primaria.
Línea 61: Línea 61:
 </code> </code>
  
-===== Claves foráneas =====+==== Claves foráneas ====
  
-Claves Foráneas (Foreign Keys)+Laravel asume que la clave foránea se llama ''nombre_modelo_en_singular_id'' en //snake_case//.
  
-    Nombre: +Por ejemplo, si un ''Comment'' pertenece a un ''Post'', la clave foránea será ''post_id''
-    Laravel asume que la clave foránea se llama {nombre_modelo_en_singular}_id en snake_case. +
-    Ejemplo:+
  
-        Si un Comment pertenece a un Post → clave foráneapost_id.+Si queremos personalizarlo, podemos hacerlo en las relaciones:
  
-    Personalización: +<code php> 
-    Puedes definirla manualmente en las relaciones: +class Comment extends Model { 
-    php +    public function post() { 
-    Copy +        return $this->belongsTo(Post::class, 'mi_post_id'); // Clave foránea personalizada
- +
-    class Comment extends Model { +
-        public function post() { +
-            return $this->belongsTo(Post::class, 'mi_post_id'); // Clave foránea personalizada +
-        }+
     }     }
 +}
 +</code>
 +
 +==== Timestamps automáticos ====
 +
 +Laravel espera columnas ''created_at'' y ''updated_at'' en tus tablas para gestionar fechas automáticamente.
 +
 +Si no las usas, podemos indicarlo en el modelo:
 +
 +
 +<code php>
 +class User extends Model {
 +    public $timestamps = false; 
 +}
 +</code>
 +
 +==== Columnas en Snake Case ====
 +
 +Todas las columnas de la base de datos deben definirse en //snake_case// para que Eloquent las mapee correctamente a propiedades en //camelCase// en los modelos.
 +
 +Por ejemplo, la columna ''published_at'' corresponde a la propiedad del modelo ''Post'' ''$post->published_at''.
 +
 +===== ¿Qué pasa si no sigo las convenciones? =====
 +
 +Puedes personalizar todo, pero tendrás que escribir más código (ej: definir manualmente claves foráneas, nombres de tablas, etc.). Seguir las convenciones ahorra tiempo y evita errores.
informatica/programacion/php/frameworks/laravel/convenciones.1741513444.txt.gz · Última modificación: por tempwin