strtolower()期望参数1是字符串,给定数组

时间:2016-03-08 14:41:20

标签: php laravel

我使用Laravel作为一个简单的API来路由用户:

Route::get('api/v1/mu/{dte?}', 'API\APIController@MUIntervalAPICall');

到这个控制器:

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');
}

我测试过的网址(http://localhost:8000/api/v1/mu/2016-02-13?customer=Apple&language=English)发出了这个错误:

enter image description here

是什么原因引起的?用户在技术上会将日期?language =&amp; customer =或date?customer =或date?language =或仅仅是日期?但都没有效果。

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

1 个答案:

答案 0 :(得分:0)

回复:“我如何在我提到的网址中获取这些值并在我的查询中使用它?”

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

您可以使用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');
}