daikazu/eloquent-salesforce-objects

A Laravel package that provides an Eloquent-style interface for interacting with Salesforce objects.

Maintainers

Package info

github.com/daikazu/eloquent-salesforce-objects

pkg:composer/daikazu/eloquent-salesforce-objects

Fund package maintenance!

Daikazu

Statistics

Installs: 50

Dependents: 0

Suggesters: 0

Stars: 5

Open Issues: 2

v1.0.0 2026-03-27 19:40 UTC

This package is auto-updated.

Last update: 2026-03-27 19:48:13 UTC


README

Logo for Eloquent Salesforce Objects

Eloquent Salesforce Objects

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

A Laravel package that lets you work with Salesforce objects using Eloquent syntax. Built on top of omniphx/forrest for authentication and API communication.

This package was heavily inspired by fabulous roblesterjr04/EloquentSalesForce, but written from the ground up with modern PHP 8.4+, full type safety, and a cleaner architecture. If you're migrating from that package, see the migration guide.

Features

  • Eloquent-Style Models - Define Salesforce objects using familiar Laravel model syntax
  • CRUD Operations - Create, read, update, and delete Salesforce records
  • Relationships - hasMany, belongsTo, and hasOne
  • Batch Queries - Execute multiple SOQL queries in a single API call
  • Bulk Operations - Efficient bulk insert, update, and delete
  • Aggregate Functions - COUNT, SUM, AVG, MIN, MAX
  • Pagination - Built-in pagination with Laravel's paginator
  • Apex REST - Call custom Apex REST endpoints
  • Model Generator - php artisan make:salesforce-model scaffolds models from live Salesforce metadata

Requirements

  • PHP 8.4+
  • Laravel 12.0+
  • Salesforce account with API access

Quick Start

composer require daikazu/eloquent-salesforce-objects

Configure omniphx/forrest with your Salesforce credentials, then scaffold a model:

php artisan make:salesforce-model Account

Or define one manually:

use Daikazu\EloquentSalesforceObjects\Models\SalesforceModel;

class Account extends SalesforceModel
{
    protected ?array $defaultColumns = [
        'Name',
        'Industry',
        'AnnualRevenue',
    ];
}

Query with familiar Eloquent syntax:

$accounts = Account::where('Industry', 'Technology')
    ->orderBy('Name')
    ->get();

$account = Account::create(['Name' => 'Acme Corp']);
$account->update(['Industry' => 'Manufacturing']);
$account->delete();

$account->contacts; // hasMany
$contact->account;  // belongsTo

See the Quickstart Guide for a full walkthrough.

Documentation

Getting Started

Core Concepts

Advanced

Reference

Testing

composer test

Credits

License

MIT. See LICENSE.

Need help? Check the docs or open an issue.