Я собираю поиск магазина, который работает на радиусе от почтового индекса. Я делал это много раз, используя стандартные запросы и QoQs, но теперь пытаюсь объединить их с помощью cf9 ORM ... но, похоже, дошел до предела моих возможностей с помощью последнего бита.ORM Entity - удалите запись и добавьте объект
Я вытаскиваю сущность и обрабатываю ее. В конце мне необходимо:
a. Удалите запись, если она не соответствует определенным критериям (расстояние больше указанного пользователем)
OR b. Добавьте новое свойство в запись, чтобы сохранить расстояние.
В конце концов, все, что я хочу в своей сущности, это те магазины, которые находятся в пределах диапазона, указанного пользователем, с каждой записью, содержащей рассчитанное расстояние.
Лучший способ увидеть то, что я пытался сделать это, чтобы просмотреть полную функцию
Любые предложения высоко оценили !!
public function getByPostcodeRadius(required postcode="",
required radius=""){
//set some initial vals
rs = {};
geo = New _com.util.geo().init();
local.postcodeGeo = geo.getGeoCode("#arguments.postcode#, Australia");
local.nearbyStores = "";
local.returnStores = {};
//load stores
local.stores = entityload("stores");
//loop over all stores and return list of stores inside radius
for(i=1; i <= ArrayLen(local.stores); i++){
store = {};
store.id = local.stores[i].getID();
store.geoCode = local.stores[i].getGeoCode();
store.Lat = ListgetAt(store.geoCode,1);
store.Lng = ListgetAt(store.geoCode,2);
distance = geo.getDistanceByGeocode(local.postcodeGeo.Lat,local.postcodeGeo.Lng,store.Lat,store.Lng);
//************************
//HERE IS WHERE I AM STUCK.
if (distance LT arguments.radius){
//here I need to add a property 'distance' and set it's value
local.stores[i].distance = distance; // this adds it to the object, but not with the PROPERTIES
} else {
// here i need to remove the store from the object as it's distance was greater than the one passed in
arrayDeleteAt(local.stores,i); //this clearly isn't working, as positions are changing with each loop over
}
}
return local.stores;
}
CF Simplicty .., которая работала и кажется, что подход я хочу взять, но я не могу найти способ, чтобы заказать результат на «расстояние». Я могу с объектом, возвращаемым EntityLoad(), но не может показаться, что выработаете, как бы я заказывал результаты, когда получаю массив из-за этого процесса. Я играл с ArraySort(), но это не делает трюк. Любые указатели? Еще раз спасибо CfSimplicity! – Jason
Я закончил сортировку с этим cflib udf (http://cflib.org/udf/ArrayOfStructsSort) .. все работает. Большое спасибо за вашу помощь!! – Jason
Рад, что это сработало, Джейсон. Возможно, простой структурный или двухмерный массив мог бы быть проще в конце концов. Кстати, я исправил пару незащищенных vars в моем коде: geo следует ссылаться как local.geo. – CfSimplicity