blackstone / laravel-nocodb
NocoDB Eloquent Driver for Laravel
v1.1.2
2026-02-05 10:50 UTC
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.8
- illuminate/database: ^11.0|^12.0
- illuminate/http: ^11.0|^12.0
- illuminate/pagination: ^11.0|^12.0
- illuminate/support: ^11.0|^12.0
Requires (Dev)
- mockery/mockery: ^1.6
- orchestra/testbench: ^9.0
- phpunit/phpunit: ^10.0
README
A Laravel package that provides an Eloquent driver for NocoDB, allowing you to interact with NocoDB tables using standard Eloquent syntax.
Installation
- Install via Composer:
composer require blackstone/laravel-nocodb
- Publish the configuration file:
php artisan vendor:publish --tag=nocodb-config
Configuration
Add your NocoDB credentials to your .env file:
NOCODB_API_URL=https://app.nocodb.com NOCODB_API_TOKEN=your-api-token NOCODB_PROJECT=p_xxxx NOCODB_WORKSPACE=optional
Usage
Creating a Model
Create a model and use the NocoModelTrait. Set the $table property to your NocoDB table name (or ID).
namespace App\Models; use Illuminate\Database\Eloquent\Model; use BlackstonePro\NocoDB\Traits\NocoModelTrait; class Lead extends Model { use NocoModelTrait; protected $table = 'leads'; // Or Table ID protected $primaryKey = 'Id'; // Default is Id protected $fillable = ['name', 'email', 'status', 'amount']; }
Querying
You can use standard Eloquent methods:
// Get all leads $leads = Lead::all(); // Filter and Sort $leads = Lead::where('status', 'new') ->where('amount', '>', 500) ->orderBy('CreatedAt', 'desc') ->get(); // Pagination $leads = Lead::paginate(25); // Find by ID $lead = Lead::find(1);
Creating Records
$lead = Lead::create([ 'name' => 'John Doe', 'email' => 'john@example.com', 'status' => 'new', 'amount' => 1000 ]);
Updating Records
$lead = Lead::find(1); $lead->update(['status' => 'contacted']); // Or via query (requires ID in where clause for now) Lead::where('Id', 1)->update(['status' => 'contacted']);
Deleting Records
$lead = Lead::find(1); $lead->delete(); // Or via query Lead::destroy(1);
Features
- Eloquent Compatibility: Works with
where,orderBy,limit,offset,paginate. - NocoDB API v2: Uses the latest NocoDB REST API.
- Automatic Retries: Handles transient API failures.
- Clean Code: Follows Laravel standards.
License
MIT