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:38] – [Nombres de tablas] tempwininformatica:programacion:php:frameworks:laravel:convenciones [2025/03/09 10:50] (actual) – [Columnas en Snake Case] tempwin
Línea 18: Línea 18:
   * **Migraciones**: ''create_users_table'' → genera tabla ''users''.   * **Migraciones**: ''create_users_table'' → genera tabla ''users''.
  
-===== Tablas =====+===== Bases de datos =====
  
 ==== Nombres de tablas ==== ==== Nombres de tablas ====
Línea 38: Línea 38:
 } }
 </code> </code>
 +
 +==== Tablas Pivote ====
 +
 +Para relaciones muchos a muchos (//Many-to-Many//), Laravel espera una tabla intermedia (**pivote**) con los nombres de las dos tablas relacionadas **en orden alfabético**, en singular y unidos por un guion bajo.
 +
 +Por ejemplo:
 +
 +^ Modelos                ^ Tabla pivote  ^
 +| ''User'' y ''Role''    | ''role_user''  |
 +| ''Post'' y ''Tag''     | ''post_tag''   
 +
 +==== Claves primarias ====
 +
 +Por defecto, Laravel espera una columna llamada ''id'' como clave primaria.
 +
 +Si nuestra tabla usa otro nombre como clave primaria, hay que definir una propiedad //protected// ''$primaryKey'' en el modelo correspondiente:
 +
 +<code php>
 +class User extends Model {
 +    protected $primaryKey = 'user_id'; 
 +}
 +</code>
 +
 +==== Claves foráneas ====
 +
 +Laravel asume que la clave foránea se llama ''nombre_modelo_en_singular_id'' en //snake_case//.
 +
 +Por ejemplo, si un ''Comment'' pertenece a un ''Post'', la clave foránea será ''post_id''
 +
 +Si queremos personalizarlo, podemos hacerlo en las relaciones:
 +
 +<code php>
 +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.1741513111.txt.gz · Última modificación: por tempwin