2014-02-11 154 views
0

我使用的半正矢公式建立laravel 4.1附近的一個功能,我的原始查詢:Laravel 4.1原始查詢訪問結果

$haversine = '(3959 * acos(cos(radians(' . $lat . ')) * cos(radians(lat)) * cos(radians(lng) - radians(' . $lng . ')) + sin(radians(' . $lat . ')) * sin(radians(lat))))'; 

    $places = DB::table('b_details') 
     ->select(DB::raw($haversine . ' as distance')) 
     ->orderBy('distance', 'ASC') 
     ->having('distance', '<', $radius) 
     ->get(); 

    foreach ($places as $place) { 
     var_dump($place); 
    } 

這隻返回計算像這樣的結果:

object(stdClass)[231] 
    public 'distance' => float 0.037140269070672 
object(stdClass)[232] 
    public 'distance' => float 0.093237928677323 
object(stdClass)[233] 
    public 'distance' => float 0.4404396657947 

我無法再訪問數據,例如:

foreach ($places as $place) { 
     var_dump($place->name); 
    } 

產生這個錯誤:

Undefined property: stdClass::$name 

任何幫助表示讚賞,謝謝。

回答

1

您的選擇列表應該是要選擇的列數組(儘管它會將單個字符串轉換爲單個元素數組):您只列出了要返回的一個項目,距離,因此它只會返回該列item ....你需要告訴它返回所有其他數據列以及

$places = DB::table('b_details') 
    ->select(array('*', DB::raw($haversine . ' as distance'))) 
    ->orderBy('distance', 'ASC') 
    ->having('distance', '<', $radius) 
    ->get(); 
+0

謝謝,有一個美好的一天:) – Moe