У меня есть таблицы БД региона (список городов), Аренда (список информации об аренде) и Rental_Location (список адресов аренды + lat/long).Laravel 5 Как получить связанные данные таблицы с помощью цепочки
Основные отношения:
Regions haveMany Rentals (with FK's region_id and rental_location_id in Rentals table)
Locations haveMany Rentals, or the reverse logic Rental belongsTo a Location
То, что я хотел бы сделать, это получить информацию о местонахождении всех аренды в регионе от region_id (из таблицы в аренду), а также включают в себя расположение пространственные данные (rental_locations таблица):
$region = Region::find(1);
$rentals = $region->rentals; // doesn't contain location information yet
$rentalDataWithSpatialLocationData = $region->rentals->location; // what I liked to do
Но последняя строка, используя отношения belongsTo не будет работать, добавив пространственные данные из rental_locations в оригинальную коллекцию аренды.
В настоящее время коллекция $ rentals содержит все арендные платы для региона, но не содержит пространственных данных для маркировки местоположения на карте, но кроме использования объединения в QueryBuilder, что-то вроде этого ниже и не использует свойства ORM hasMany в мои модели:
$spatials = DB::table('rentals')
->join('regions', 'rentals.region_id', '=', 'regions.id')
->join('rental_locations', 'rentals.rental_location_id', '=', 'rental_locations.id')
->where('rentals.region_id', '=', $region_id)
->select('*')
->get();
в принципе, я не могу понять, как получить коллекцию всех аренды с их информацией о местоположении, это возможно с помощью ORM? Похоже, что это может стать дорогим по сравнению с соединением, поэтому я предполагаю, что теперь вы не используете ORM для исключения QueryBuilder, но больше для дополнения простых и быстрых запросов отношений?
Если у вас есть в вашем RegionModel функция rent(), которая возвращает hasMany отношения, она должна работать отлично. Является результатом $ region-> rentals - пустой или пустой коллекцией? – Danny
Привет, @ Danny, извините, я, должно быть, объяснил это неправильно, мое плохое. $ Region-> rentals возвращает коллекцию всех арендных ставок, но мне также нужны пространственные данные из rent_locations. – mtpultz
поэтому в основном у каждого Аренда есть несколько мест? – Danny