2015-07-02 34 views
-1

我有一個帶有zipcode,經度和緯度的數據庫。我有另一個數據庫有汽車與他們的位置郵編。我有一個函數返回用戶位置(從IP地址拉出)和汽車位置(基於郵編,緯度和經度)之間的距離。我想按最接近用戶的順序訂購汽車。我不確定最好的方法。排序問題 - Orderby非db列

我會想象一個orderby(距離ASC),但距離不在數據庫中,而是以每個用戶爲基礎獲得的。

語言:PHP,MYSQL架構:YII2

+0

請添加一些代碼,以便更好地理解。 – arogachev

+0

我不想粘貼代碼,因爲我仍然試圖想出最好的方式。我想過在過濾器之後對查詢進行排序,但距離不在數據庫中。我正在考慮某種連接表,其中car.zip = $ zipcoderadius ['zipcode'],但我不確定要如何處理這個問題。 $ zipcoderadius - 是距離檢查函數的返回值,它有一個包含郵編及其距離的數組。 –

+0

在這種情況下很難提供幫助。 – arogachev

回答

0

如果此功能在MySQL(例如存儲功能),那麼你可以通過說這個功能很好,ORDER BY USER_DISTANCE(用戶距離)或類似的命令。

如果函數在PHP代碼中(非MySQL),那麼您需要在返回查詢後對結果進行排序。 PHP具有多種功能,這將有助於您與此:

你可能想在這裏找到用戶定義的排序功能之一: http://php.net/manual/en/array.sorting.php

+0

該函數在PHP中。如果距離不在數據庫中,我將如何對結果進行排序?我不能僅僅通過郵編排序,因爲他們可以在更高的郵政編碼距離更近。 –

+0

我想你是在查詢結果後建議,做一個結果的地方,我拿着郵編和距離範圍的數組,排序最低距離,然後做一個比較郵政編碼地址與郵政編碼距離/郵編數組。 –

+0

這正是我所建議的。 –