bluefeather/eloquent-filemaker
Work with FileMaker databases through the Data API using familiar Laravel Eloquent models and query builder. Supports relationships, portals, containers, field remapping, script running, and automatic authentication and session management across multiple files and credentials.
Architecture fit
Eloquent-FileMaker is an adapter, not a platform. It puts an Eloquent-shaped façade over the Claris FileMaker Data API so a Laravel application can read and write FileMaker records as models. That makes it a strong fit for one specific architecture: a Laravel application that needs to sit in front of an existing FileMaker system of record (line-of-business apps in manufacturing, healthcare ops, inventory, field service, publishing) without a data migration. It is a poor fit for greenfield work — if FileMaker is not already a hard constraint, this package is solving a problem you should not create.
The critical architectural caveat a TPM must internalise: the Data API is not a relational database. FileMaker "tables" are accessed through layouts, which are UI objects. The fields your model can see are the fields placed on that layout, and the layout's sort/portal configuration shapes the response. The Eloquent illusion therefore leaks in three places: schema is a presentation artifact, there are no real joins (portals substitute, with payload inflation and nesting limits), and there are no transactions. Anything that requires relational semantics — aggregates, whereHas, multi-table consistency, chunked streaming — must be pushed into FileMaker calculation fields or server-side scripts, or computed in PHP.
Integration feasibility
Installation and wiring are conventional: composer require, a filemaker connection entry, and models extending the package's base model. The package supports multiple FileMaker files, which matters because real FileMaker deployments are almost always multi-file. Credentials are FileMaker account credentials (or Claris ID in OAuth-configured deployments) and the target database must have the fmrest extended privilege enabled and the Data API exposed on FileMaker Server or Claris Cloud. Those are server-side configuration changes owned by the FileMaker administrator, not the Laravel team — schedule that dependency early.
Feasibility is high for read-mostly paths (dashboards, search, record detail, customer portals) and moderate for writes. The realistic write pattern is not $model->save() on arbitrary fields but invoking FileMaker scripts through the API so business rules, validation, and audit trails stay where they already live. This package's value is highest when it is used as a thin read façade plus a script-dispatch layer, and lowest when it is used to reimplement FileMaker business logic in Laravel.
Technical risk
| Risk | Severity | Notes |
|---|---|---|
| Bus factor / single-vendor maintenance | High | 67 stars, 0 dependents, maintained by one consultancy. MIT licence is the mitigation: fork and vendor it. |
| Layout-coupled schema | High | A FileMaker developer renaming or unpublishing a field on a layout silently breaks a Laravel model. No migration guardrails exist. |
| No transactions | High | Partial writes are possible; idempotency and compensating logic must be designed in Laravel or delegated to scripts. |
| Performance shape | Medium-High | Offset pagination, per-record round trips, portal payloads. Expect N+1 amplification to be the default, not the exception. |
| Session/token lifecycle | Medium | Data API tokens expire after ~15 minutes idle and sessions count against FileMaker concurrency. Must be cached and reused, never minted per request. |
| Version drift | Medium | Laravel major-version support, PHP 8.x floor, and FileMaker Server/Cloud Data API version all need explicit pinning and a compatibility test. |
Key questions
Stack fit
Fits Laravel 9–12 / PHP 8.1+ deployments with MySQL or Postgres as the application database. The natural topology is a Laravel app with two connections: the relational database for app-native state (users, sessions, preferences, audit, queue tables) and the filemaker connection for domain records. Keep them in separate model namespaces and never let Eloquent relationships span the two — cross-store joins do not exist, and pretending otherwise produces hidden N+1 loops. Define a repository/port interface (CustomerRepository) with a FileMaker adapter behind it; that interface is what makes a future migration or a cached replica a swap rather than a rewrite.
Migration path
There are two directions to be explicit about. If Laravel is new and FileMaker is inherited, this is an additive greenfield integration — no migration, just an anti-corruption layer. If you are exiting FileMaker, use this package only as a transitional read path during dual-run, and do not build write logic on it; write to the new schema and sync backward if required. Decide which of these you are before the first sprint, because they produce different code shapes.
Compatibility
Pin the package to a minor version, pin Laravel and PHP in CI, and add a smoke test suite that runs against a dedicated FileMaker test file. That suite is the real compatibility contract — it catches layout changes, Data API version drift, and error-code behaviour changes that no changelog will tell you about. Verify support for your exact Laravel major before committing; this package's release cadence is driven by a small team.
Sequencing
Maintenance
The maintenance burden is deliberately low in code volume and high in environmental coupling. Package updates are infrequent — budget for a fork rather than an upstream PR queue. The real ongoing cost is the cross-team contract with FileMaker administrators: every layout change is a potential production incident in the Laravel app, and there is no schema-diff safety net. Institute a shared registry of which layouts and fields the Laravel app depends on, and make additions to that registry part of the FileMaker change process. Also expect periodic, unavoidable work when FileMaker Server or Claris FileMaker is upgraded.
Support
Support is effectively vendor-direct. Gearbox Solutions offers consulting, which is the pragmatic answer: negotiate a support retainer sized to the app's criticality rather than relying on community answers for a package with 67 stars and no dependents. Internally, the on-call surface is split — Laravel errors often originate in FileMaker configuration, and Laravel on-call engineers will not have FileMaker access. Name a single cross-trained owner.
Scaling
Scaling is governed by FileMaker, not Laravel. Three ceilings: concurrent Data API sessions counted against FileMaker licensing, server-side script execution and record-locking behaviour, and per-request latency (typically tens to hundreds of milliseconds per call). Practical mitigations, in cost order: aggressive token reuse; request coalescing and caching of hot reads; server-side scripts that return multiple records in one call instead of per-record loops; a read replica for list/report views; queueing all writes so user-facing latency excludes FileMaker. Horizontal Laravel scaling is easy; horizontal FileMaker scaling is a licensing conversation.
Failure modes
Design for these explicitly, because several fail silently:
Ramp-up
Expect a bimodal skill gap: Laravel developers understand Eloquent but not layouts, portals, calculation fields, record IDs, or FileMaker privilege sets; FileMaker developers understand the data but not Eloquent conventions or Laravel's queue/cache idioms. Budget two to three weeks of pairing before either group is independently productive on the integration seam. The single highest-leverage onboarding artifact is the smoke-test suite — it doubles as executable documentation of exactly which FileMaker surfaces the application depends on.
How can I help you explore Laravel packages today?