daikazu/eloquent-salesforce-objects

A Laravel package that provides an Eloquent-style interface for interacting with Salesforce objects.
10,158 10
Install
composer require daikazu/eloquent-salesforce-objects
Latest Version:v2.0.1
PHP:^8.4
License:MIT
Last Updated:Oct 2, 2026
Links: GitHub  ·  Packagist
Maintainer: daikazu

Eloquent Salesforce Objects

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

Buy Me A Coffee

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, upsert by External Id, 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 using an OAuth flow such as ClientCredentials (avoid UserPasswordSoap, which relies on the SOAP API login() call Salesforce is retiring; see Installation), 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

AI Agent Skills (Laravel Boost)

The package ships two Laravel Boost skills that teach AI coding agents (Claude Code, Cursor, Codex, etc.) how to use it correctly:

Skill Use it for
eloquent-salesforce-objects-development Defining models, querying, CRUD, bulk and batch operations, metadata, Apex REST, and testing against Salesforce
migrating-from-eloquent-salesforce Moving an app from roblesterjr04/EloquentSalesForce to this package

If your app uses Boost, the skills are offered automatically when you run:

php artisan boost:install
# or, if Boost is already installed
php artisan boost:update --discover

Testing

composer test

Credits

License

MIT. See LICENSE.


Need help? Check the docs or open an issue.

Related Packages

rob-lester-jr04/eloquent-sales-force

An eloquent model data source for Salesforce

522,452 93
spatie/laravel-translatable

A trait to make an Eloquent model hold translations

30,490,899 2,461
spatie/laravel-sluggable

Generate slugs when saving Eloquent models

14,569,030 1,556
kodeine/laravel-acl

Light-weight role-based permissions for Laravel 5 built in Auth system.

364,706 775