2016-03-08 109 views
1

我使用Laravel为一个简单的API的路由用户:用strtolower()预计参数1是字符串,数组给定

Route::get('api/v1/mu/{dte?}', 'API\[email protected]'); 

到该控制器:

public function MUIntervalAPICall(Request $dte) 
{ 
    $date = $dte->dte; 
    $element_language = $dte->language; 
    $element_customer = $dte->customer; 
    $mu_interval = MUInterval::select("SELECT :element_language, :dte, :element_customer, null, null, null, null, null, null, null, null, null, null, null" 
    , ["element_language" => $element_language, "dte" => $date, "element_customer" => $element_customer])->get()->toArray(); 
    function array_to_xml($data, &$xml_data) { 
     foreach($data as $key => $value) { 
      if(is_array($value)) { 
       $key = 'Exception'; 
       $subnode = $xml_data->addChild($key); 
       array_to_xml($value, $subnode); 
      } else { 
       $xml_data->addChild("$key",htmlspecialchars("$value")); 
      } 
     } 
    } 
    $xml_data = new SimpleXMLElement('<?xml version="1.0"?><muExceptions></muExceptions>'); 
    array_to_xml($mu_interval,$xml_data); 
    $result = $xml_data->asXML(); 
    return Response::make($result, '200')->header('Content-Type', 'text/xml'); 
} 

甲URL我测试(http://localhost:8000/api/v1/mu/2016-02-13?customer=Apple&language=English)给出此错误:

enter image description here

是什么引起的?用户会在技术上投入日期?language = & customer = or date?customer = or date?language = or just just date?但没有任何作品。

我该如何获取我提到的URL中的值,并在查询中使用它?

+0

这是关于你的数据库查询 – haakym

+0

看来你的查询是错误的。尝试在查询后立即执行dd($ mu_interval)。 –

+0

你有没有为你的模型设置的增变器? –

回答

0

回应于:“我将如何在我提到的URL中获取这些值并在我的查询中使用它?”

您正在传递方法一个Request对象,您可以使用该对象访问请求/ url中的数据。

可以使用inputget方法,这样访问:

$element_language = $dte->input('language'); 

$element_language = $dte->get('language'); 

进一步阅读这里:

https://laravel.com/docs/5.2/requests#accessing-the-request

https://laravel.com/api/5.2/Illuminate/Http/Request.html#method_input

我觉得你的代码应该是这样的:

public function MUIntervalAPICall(Request $dte) 
{ 
    // get request data 
    $date    = $dte->get('dte'); 
    $element_language = $dte->get('language'); 
    $element_customer = $dte->get('customer'); 

    $mu_interval = MUInterval::select("SELECT :element_language, :dte, :element_customer, null, null, null, null, null, null, null, null, null, null, null" 
    , ["element_language" => $element_language, "dte" => $date, "element_customer" => $element_customer])->get()->toArray(); 

    // xml stuff 
    function array_to_xml($data, &$xml_data) { 
     foreach($data as $key => $value) { 
      if(is_array($value)) { 
       $key = 'Exception'; 
       $subnode = $xml_data->addChild($key); 
       array_to_xml($value, $subnode); 
      } else { 
       $xml_data->addChild("$key",htmlspecialchars("$value")); 
      } 
     } 
    } 

    $xml_data = new SimpleXMLElement('<?xml version="1.0"?><muExceptions></muExceptions>'); 
    array_to_xml($mu_interval,$xml_data); 
    $result = $xml_data->asXML(); 

    // response 
    return Response::make($result, '200')->header('Content-Type', 'text/xml'); 
} 
相关问题