DB::table('trips')
->join('routes', 'routes.trip_id', '=', 'trips.id')
->join('vehicles', 'trips.vehicle_id', '=', 'vehicles.id')
->where('trips.user_id', '=', $id)
->get(['trips.id','from', 'to', 'brand', 'model', 'start_at', 'end_at']);
Trip:all();
interface TripsRepository extends Repository
{
public function getAllWithRoutesAndVechicles(): Collection;
}
//
// Не забыть зарегать интерфейс репозитория в контейнере и использовать DatabaseTripsRepository
// в качестве реализации интерфейса по-умолчанию. А через контекстуальный биндинг подменять, если что.
// 1) $container->singleton(TripsRepository::class, DatabaseTripsRepository::class);
// 2) $container->when('somthing')->needs(TripsRepository::class)->give(...);
//
class DatabaseTripsRepository implements TripsRepository
{
// DI usage
public function __construct(Trips $trips)
{
$this->trips = $trips;
}
public function getAllWithRoutesAndVechicles(): Collection
{
return $this->trips
->join('routes', 'routes.trip_id', '=', 'trips.id')
->join('vehicles', 'trips.vehicle_id', '=', 'vehicles.id')
->where('trips.user_id', '=', $id)
->get(['trips.id','from', 'to', 'brand', 'model', 'start_at', 'end_at']);
}
}