Я думаю, что вам нужно использовать SQL "join", если вы хотите упорядочить отношения, так как with () будет загружать результат после (вы все равно можете использовать with (), если вам нужна энергичная загрузка клиентов).
Используйте JOIN
Sale::select('total', 'client_id')->join( 'client', 'client.sale_id', '=', 'sale.id' )>orderBy( 'client.total', 'ASC' )->get();
Не уверен насчет иностранных имен и прочего, но вы поняли.
Используйте сортировку (в вашей коллекции)
$data->sortBy('client.total');
Вы должны предпочесть решение 1 (JOIN), так как второе решение требует обработки запросов к базе данных + сбора.
Редактировать: вы можете сделать более сложный оператор соединения
Edit2: отметьте этот стек