我有一个简单的API,它可以简单地获取_GET变量,并将它们用作我控制器中的Where子句。
public function MUIntervalAPICall(Request $dte)
{
$date = $dte->dte;
$element_language = $dte->language;
$element_customer = $dte->customer;
$element_contract = $dte->contract;
$element_subcontract = $dte->subcontract;
$element = $dte->element;
$mu_interval= MUInterval::select('element_customer', 'element_contract', 'element_subcontract', 'element_language', 'element_site', 'element', 'src_id', 'src_type_id', 'dte', 'intvl', 'val_src_id', 'exception_name', 'duration_seconds', 'duration_fte')
->where('dte', $date)
if(isset($_GET['customer'])){
->where('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中设置了customer,它只会检查URL。例如2016-14-03?客户=苹果。但出于某种原因,我收到了这个错误:
我注释掉了if语句和结束括号,它实际上有效,并提取日期和客户。
->where('dte', $date)
->where('element_customer', $element_customer)
->get()
->toArray();
我想知道我是否缺少名称空间,或者是否“如果&#39;声明不适用于此类控制器。
答案 0 :(得分:1)
你不能那样做方法链接。试试 -
$mu_interval= MUInterval::select('element_customer', 'element_contract', 'element_subcontract', 'element_language', 'element_site', 'element', 'src_id', 'src_type_id', 'dte', 'intvl', 'val_src_id', 'exception_name', 'duration_seconds', 'duration_fte')
->where('dte', $date);
if(isset($_GET['customer'])){
$mu_interval = $mu_interval->where('element_customer', $element_customer);
}
答案 1 :(得分:1)
这是它的工作原理:
$mu_interval= MUInterval::select('element_customer', 'element_contract', 'element_subcontract', 'element_language', 'element_site', 'element', 'src_id', 'src_type_id', 'dte', 'intvl', 'val_src_id', 'exception_name', 'duration_seconds', 'duration_fte')
->where('dte', $date);
if(isset($_GET['customer'])){
$mu_interval = $mu_interval->where('element_customer', $element_customer)
}
$mu_interval = $mu_interval->get()->toArray();