DEMOCaja de arena: crea, edita o borra libremente — nadie mas ve tus cambios.
Reiniciar datos  ·  ← Todos los ejemplos  ·  GitHub

Relaciones: FK y muchos a muchos

La llave foránea "categoría" se detecta sola, solo muestra categorías activas, y como hay más de 8 opciones el select se auto-promueve a uno buscable (con búsqueda en el propio servidor, no precargado). "Colaboradores" es una relación muchos-a-muchos real vía tabla pivote, sincronizada automáticamente al guardar.

$crud = new AppyCrud($connection, 'proyectos', $config, 'es', [ 'manyToMany' => [new ManyToMany( name: 'colaboradores', pivotTable: 'proyectos_colaboradores', localKey: 'proyecto_id', foreignKey: 'colaborador_id', relatedTable: 'colaboradores', )], ]); // 'categoria_id' filtra sus opciones con Condition::where('activa', '=', 1) // y se vuelve buscable solo porque tiene mas de 8 opciones -- automatico, // sin ninguna opcion extra que activarlo.
¿Y con MariaDB/MySQL en producción, en vez del SQLite de esta demo?

Esta demo usa SQLite en un archivo temporal para no necesitar una base de datos real. En tu proyecto, con MariaDB o MySQL, solo cambia cómo abres la conexión — el resto del código (TableConfig, AppyCrud, handle()) es exactamente igual.

$pdo = new PDO(
    'mysql:host=localhost;port=3306;dbname=mi_bd;charset=utf8mb4',
    'usuario',
    'clave'
);
$connection = Connection::fromPdo($pdo);
// MariaDB usa el mismo driver PDO 'mysql' que MySQL — no hay driver 'mariadb' separado.
// Con Laravel: Connection::fromPdo(DB::connection()->getPdo());
// Con CodeIgniter 4: Connection::fromPdo(\Config\Database::connect()->getConnection());

Listado de proyectos

Limpiar

Filtro avanzado

NombreCategoriaPresupuesto ↑Acciones
Proyecto 1Movil1250
Proyecto 2Web2500
Proyecto 3Movil3750
Proyecto 4Web5000
Proyecto 5Movil6250
Proyecto 6Web7500
Proyecto 7Movil8750
Proyecto 8Web10000
Proyecto 9Movil11250
Proyecto 10Web12500

Pagina 1 de 1

AnteriorSiguiente