Eloquent Power Joins

kirschbaum-development/eloquent-power-joins image

Eloquent Power Joins stats

Downloads
1.7M
Stars
1,190
Open Issues
9
Forks
76

View on GitHub →

The Laravel magic applied to joins.

Eloquent Power Joins

Enhance your Laravel application with "Eloquent Power Joins", a powerful package designed to facilitate advanced join queries using Eloquent ORM in a more intuitive "Laravel way". This package simplifies the management of complex SQL joins, making your database interactions both cleaner and more efficient.

Features

  • Join Relationships Easily: Utilize existing Eloquent relationships to perform join queries without manually specifying the foreign keys or table names.
  • Scope and Condition Support: Apply local scopes and custom conditions directly within your join operations.
  • Nested and Polymorphic Joins: Supports complex nested joins and automatically handles polymorphic relationships.
  • Alias Handling: Use aliases effortlessly in your joins to avoid column name conflicts.
  • Enhanced Sorting: Sort query results based on related model columns and aggregates directly.
  • Query Relationship Existence: Use join operations instead of subqueries to check for the existence of relationships, enhancing performance.
  • Soft Deletes Awareness: Automatically accounts for soft deleted records in joins unless specified otherwise.
  • Global Scopes Compatibility: Integrate global scopes within your joins with ease.

Installation

Install via composer for Laravel versions 8 and above:

composer require kirschbaum-development/eloquent-power-joins

For Laravel versions below 8, use:

composer require kirschbaum-development/eloquent-power-joins:2.*

Usage

To use the power joins, include the PowerJoins trait in your Eloquent models:

use Kirschbaum\PowerJoins\PowerJoins;
 
class User extends Model
{
use PowerJoins;
}

Basic Join

User::joinRelationship('posts');

Nested and Polymorphic Joins

User::joinRelationship('posts.comments');
Post::joinRelationship('images'); // For polymorphic relationships

Applying Conditions

User::joinRelationship('posts', function ($join) {
$join->where('posts.approved', true);
});

Using Aliases

Post::joinRelationshipUsingAlias('category.parent', 'category_alias');

Checking Relationship Existence

User::powerJoinHas('posts.comments');

Ordering by Related Columns

User::orderByPowerJoins('profile.city');

Contributing

Contributions are welcome! Please refer to the contributing guidelines.

Security

For any security issues, contact luis@kirschbaumdevelopment.com or nathan@kirschbaumdevelopment.com.

License

This package is open-sourced software licensed under the MIT license.

kirschbaum-development photo

We are a team of carefully curated Laravel experts with a history of delivering practical and efficient solutions to complex problems.

Cube

Laravel Newsletter

Join 40k+ other developers and never miss out on new tips, tutorials, and more.


Kirschbaum Development Eloquent Power Joins Related Articles

Laravel Cloud logo

Laravel Cloud

Easily create and manage your servers and deploy your Laravel applications in seconds.

Laravel Cloud
PhpStorm logo

PhpStorm

The go-to PHP IDE with extensive out-of-the-box support for Laravel and its ecosystem.

PhpStorm
Blastup logo

Blastup

Blastup provides social media enhancement services including buying Instagram likes, followers, and views, with features like instant delivery and a variety of packages to suit different needs.

Blastup
SaaSykit: Laravel SaaS Starter Kit logo

SaaSykit: Laravel SaaS Starter Kit

SaaSykit is a Multi-tenant Laravel SaaS Starter Kit that comes with all features required to run a modern SaaS. Payments, Beautiful Checkout, Admin Panel, User dashboard, Auth, Ready Components, Stats, Blog, Docs and more.

SaaSykit: Laravel SaaS Starter Kit
Shift logo

Shift

Running an old Laravel version? Instant, automated Laravel upgrades and code modernization to keep your applications fresh.

Shift
Statamic logo

Statamic

The drop-in ready Laravel CMS you’re been waiting for. Go full-stack or headless, flat file or database – it’s up to you.

Statamic