Laravel存储功能更改返回数据

时间:2014-05-28 15:57:30

标签: php json laravel

我确定在这里做错了什么,只是不知道在哪里或哪里。

我有一个处理ajax post请求的Laravel控制器,并将curl请求的结果返回给ajax调用:

public function store()
{
        /** Receive long and lat through ajax **/
        $long = Input::get('longitude');
        $lat = Input::get('latitude');
        $location = $lat . "," . $long;
        $url = blablable;
        $curl = curl_init();
        curl_setopt_array($curl, 
            array(
                CURLOPT_RETURNTRANSFER => 1,
                CURLOPT_URL => $url
                ));
        $result = curl_exec($curl);
        return $result;
        curl_close($curl);
}

这样做:curl返回一个JSON数组,该数组将被传递回ajax调用。

但现在我想将传入的数据保存到数据库中:

$location = new Location();
$location->latitude = Input::get('latitude');
$location->longitude = Input::get('longitude');
$location->save();

我在函数顶部添加了这4行,数据被保存到数据库但JSON数组被抢占,不知何故<!-- app/models/Location.php -->被添加到返回的顶部,使得JSON数组无效。

不知道是什么导致了这一点,所以任何提示或建议都非常感谢!

- 编辑1 -

Input::all();的结果是

array(2) {
 ["latitude"]=>
 string(10) "50.8809794"
 ["longitude"]=>
 string(9) "4.6920714"
}

1 个答案:

答案 0 :(得分:0)

这不是一个解决方案,而是一种清理代码的方法:

  1. 您不需要使用curl,而是可以使用Request::create()Route::dispatch()
  2. 您应该使用模型中的protected $fillable属性来清理新条目。
  3. 您的代码可以成为:

    public function store()
    {
        // This is for saving the entry
        $location = new Location();
        $location->fill(Input::all());
        $location->save();
    
        // This is for the cURL 
        // (assuming this is a GET requst, but other methods are available)
        $request = Request::create('/path/to/url/', 'GET');
    
        $response = Route::dispatch($request);
    
        // Do stuff with the $response or just return it
        return $response;
    }