Is there a reason you're using join and not just eager/lazy loading the relationships?
$model = ModelA::with('ModelB')->get();
$model->load('ModelC');
Read here: https://laravel.com/docs/5.5/eloquent-relationships#eager-loading and here: https://laravel.com/docs/5.5/eloquent-relationships#lazy-eager-loading