Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

136
Vistas
Definición de los valores de un campo en una base de datos en el código Laravel para que el código sea más legible

Actualmente, estoy escribiendo una aplicación laravel con una parte para enviar mensajes entre el personal de la empresa y los clientes.
Entonces, tengo un campo llamado "estado" en la base de datos. En este campo, un valor de uno indica que el mensaje está esperando una respuesta, un valor de dos indica que ha sido respondido y un valor de tres indica que el mensaje ha sido cerrado. Sin embargo, aquí hay un problema. No está claro qué hacen estos números cuando alguien mira mi código.
¿Habría alguna forma de definir este número o alguna otra forma de hacer que mi código sea más legible?
(Estoy usando laravel eloquent ORM) El siguiente código es para el método que cierra una conversación:

 public function close(Request $request) { $message = Message::find($request->message_id); // Status one indicates that a conversation has been closed $message->status = 1; $message->save(); return \response($message, 200); }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Use constantes en su modelo de mensaje

 class Message { const STATUS_PENDING = 1; const STATUS_ANSWERED = 2; const STATUS_CLOSED = 3; //... }

Entonces su código será legible

 public function close(Request $request) { $message = Message::find($request->message_id); $message->status = Message::STATUS_CLOSED; $message->save(); return \response($message, 200); }

O incluso mejor, conviértalo en un método en su modelo además de los valores constantes

 public function close(Request $request) { $message = Message::find($request->message_id); $message->close(); return \response($message, 200); }

De esa manera, en el futuro puede actualizar el método, por ejemplo

 class Message { public function close() { if ($this->status != self::STATUS_ANSWERED) { //log message closed without client answer } $this->status = STATUS_CLOSED; $this->save(); } }
over 4 years ago · Santiago Trujillo Denunciar

0

Podrías usar algo como esto. Primero creamos algunas variables estáticas en el modelo, que representan el estado de su conversación:

 public static $_STATUS_PENDING = 1; public static $_STATUS_ANSWERED = 2; public static $_STATUS_CLOSED = 3;

Cuando los agregue, podrá llamarlos estáticamente ahora:

 $message->status = Message::$_STATUS_PENDING; // 1 $message->status = Message::$_STATUS_ANSWERED; // 2 $message->status = Message::$_STATUS_CLOSED; // 3

Esto es mucho más legible ahora.

Puede ir aún más lejos con esto y crear otra matriz que usará para mostrar estos valores, sin la necesidad de hacer declaraciones if-else . Primero crearemos una matriz clave-valor que representará los valores:

 public static function getStatuses() { return [ self::$_STATUS_PENDING => 'Pending', self::$_STATUS_ANSWERED => 'Answered', self::$_STATUS_CLOSED => 'Closed', ]; }

Después de eso, crearemos una función a la que podrá llamar en su instancia de Message , que mostrará el estado del mensaje:

 public function getMessageStatus() { return self::getStatuses()[$this->status]; }

Ahora, cuando tenemos este método, simplemente podemos llamarlo y obtener el estado correcto del mensaje:

 $message->getMessageStatus(); //Pending, Answered or Closed
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda