ezermeno/fmxpluck

Package for concatenate some columns in descriptions of array directly from model in eloquent laravel

Maintainers

Package info

github.com/ezermeno/Fmxpluck

pkg:composer/ezermeno/fmxpluck

Statistics

Installs: 18

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v2.0.1 2026-03-28 07:11 UTC

This package is not auto-updated.

Last update: 2026-03-28 07:30:44 UTC


README

Un scope para Eloquent que permite generar arrays tipo pluck concatenando múltiples columnas, incluyendo campos de relaciones (belongsTo) usando notación relacion.campo.

🚀 Instalación

En tu proyecto Laravel:

composer require ezermeno/fmxpluck

📦 Uso básico

En tu modelo (ejemplo User):

$usuarios = User::fmxPluck(['name','email'],'id',':');

Esto devolverá un array con el id como clave y el valor concatenado:

[
    1 => "Juan Pérez:juan@correo.com",
    2 => "María López:maria@correo.com",
]

🔗 Uso con relaciones

Puedes incluir campos de relaciones belongsTo usando notación relacion.campo:

$usuarios = User::fmxPluck(['name','email','puesto.nombre'],'id',':');

Esto generará:

[
    1 => "Juan Pérez:juan@correo.com:Gerente",
    2 => "María López:maria@correo.com:Analista",
]

También puedes usar directamente nombres de tabla:

$usuarios = User::fmxPluck(['users.name','users.email','puestos.nombre'],'users.id',':');

⚙️ Parámetros

fmxPluck(array $columnas, string $id, string $separador = " ")
  • $columnas → columnas del modelo o relaciones (['name','email','puesto.nombre'])
  • $id → columna que será la clave del array (ej. 'id')
  • $separador → texto que separa cada columna concatenada (ej. ':')

📌 Notas

  • Las relaciones deben ser de tipo belongsTo y la FK debe estar en el modelo principal (ej. users.puesto_id).
  • Puedes usar directamente nombres de tabla (puestos.nombre) si prefieres control total.
  • El scope soporta ambos estilos: notación de relación (puesto.nombre) y tabla directa (puestos.nombre).

📝 Ejemplo completo

// En tu controlador
public function index()
{
    $usuarios = User::fmxPluck(['users.name','users.email','puestos.nombre'],'users.id',':');

    return view('usuarios.index', compact('usuarios'));
}

📄 Licencia

Este paquete se distribuye bajo la licencia MIT.