Loading Relationships Outside Of Eloquent Models In Laravel

Somedays ago i was trying to relate two models outside of the model class because I am developing a package. I found out that the resolveRelationUsing() method is appropriate for this kind of situation and it does works good.

Suppose what we do when we create a relationship in laravel? For instance, if we want to define a “one-to-one” relationship between Order and Customer model where the Order belongs to the User, you can define it like so.

namespace App;

use Illuminate\Database\Eloquent\Model;

class Order extends Model
     * Get the customer that owns the order.
    public function user()
        return $this->belongsTo('App\Customer');


This is one way to define relationships. But there’s another way in Eloquent using which you can define relationships on-the-fly outside of the models. Using resolveRelationUsing built in method.


Laravel provides this handy method called resolveRelationUsing which can be used to define relations between Eloquent models outside of model like so.


Define same relationship like before, see the below code example

use App\Order;
use App\Customer;

Order::resolveRelationUsing('customer', function ($orderModel) {
    return $orderModel->belongsTo(Customer::class, 'customer_id');


Recommended : Way to Load Custom JSON Files Into Laravel's Config


Hope it can help you.


#laravel #laravel-8x #eloquent #eloquent-tips