Herramientas de usuario

Herramientas del sitio


informatica:programacion:php:frameworks:laravel:convenciones

¡Esta es una revisión vieja del documento!


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: modelos
  • resources/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 tabla users. ===== 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 ^ | 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.
informatica/programacion/php/frameworks/laravel/convenciones.1741513756.txt.gz · Última modificación: por tempwin