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:

class User extends Model {
    protected $table = 'mis_usuarios'; // Sobrescribe la convención
}

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:

class User extends Model {
    protected $primaryKey = 'user_id'; 
}

Claves foráneas

Claves Foráneas (Foreign Keys)

  Nombre:
  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ánea: post_id.
  Personalización:
  Puedes definirla manualmente en las relaciones:
  php
  Copy
  class Comment extends Model {
      public function post() {
          return $this->belongsTo(Post::class, 'mi_post_id'); // Clave foránea personalizada
      }
  }
informatica/programacion/php/frameworks/laravel/convenciones.1741513452.txt.gz · Última modificación: por tempwin