informatica:programacion:php:frameworks:laravel:convenciones
¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Convenciones utilizadas en Laravel
Laravel prioriza “convención sobre configuración”, así que seguir sus estándares te ahorrará tiempo.
Estructura de directorios
app/Models: modelosresources/views: vistas.app/Http/Controllers: controladores.database/migrations: migraciones.routes: definición de rutas.config: archivos de configuración.
Nombrado de ficheros
- Modelos: Singular y PascalCase (ej:
User,ProductCategory). - ** Controladores: Sufijo Controller (ej:
UserController). * *Migraciones*:create_users_table→ genera tablausers. ===== Bases de datos ===== ==== Nombres de tablas ==== Por defecto, Laravel asume que el nombre de la tabla corresponde al *plural en inglés* del modelo asociado, en snake_case (minúsculas y separado por guiones bajos) si tiene más de una palabra. Ejemplos: ^ Modelo ^ Tabla ^ |User|users| |PostComment|post_comments| |ProductCategory|product_categories| Si nuestras tablas no siguen esta regla, podemos definir el nombre manualmente en el modelo estableciendo una propiedad privada con el nombre de la tabla: <code php> class User extends Model { protected $table = 'mis_usuarios'; // Sobrescribe la convención } </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 ^ |UseryRole|role_user| |PostyTag|post_tag| ==== Claves primarias ==== Por defecto, Laravel espera una columna llamadaidcomo clave primaria. Si nuestra tabla usa otro nombre como clave primaria, hay que definir una propiedad protected$primaryKeyen 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 llamanombre_modelo_en_singular_iden snake_case. Por ejemplo, si unCommentpertenece a unPost, la clave foránea serápost_idSi 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 columnascreated_atyupdated_aten 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 columnapublished_atcorresponde a la propiedad del modeloPost$post→published_at. Columna: published_at → Propiedad en modelo: $post→published_at.
informatica/programacion/php/frameworks/laravel/convenciones.1741513749.txt.gz · Última modificación: por tempwin
