Laravel belongsTo returning null when using 'with'

The problem is you don't have return for your orders relationship. It should be:

public function orders(){
    return $this->hasMany('Order');
} 

You should also use your relationships case sensitive. you showed:

$orders = Order::with('User')->get();

is working, but you should rather use

$orders = Order::with('user')->get();

to avoid extra queries to your database in future


For anyone else that runs across this, I was having the same issue, but my problem was that I had the foreign/local keys swapped. Example:

// This is correct for hasX relationships
public function user() {
    return $this->hasOne('App\Models\User', 'user_id', 'local_key_user_id');
}

// This is correct for belongsTo relationships
public function user() {
    return $this->belongsTo('App\Models\User', 'local_key_user_id', 'user_id');
}

Notice that for hasX relationships, the foreign key is the second parameter, and the local key is the third. However, for belongsTo relationships, these two are swapped.