我有一个相对简单的变量集,看起来效果很好,但我相信我输出它会产生问题。
目前我在控制器中使用以下内容:
if(empty($_GET['direction'])){
$direction = "'LIKE', '%'";
} else if ($_GET['direction'] === 'Inbound') {
$direction = "'>', 1";
} else if ($_GET['direction'] === 'Outbound'){
$direction = "'=', 1";
}
现在,我已经在事实之后得到了$ direction,并且每次测试都显示它在$ _GET ['direction']的值下准确选择了正确的变量选项。
我的问题在于我是如何在那里输出它或在下面的部分中输入结果:
$manifests = DB::table('carrier_manifests')
->join('customers', 'carrier_manifests.carrierOrigin', '=', 'customers.id')
->select('carrier_manifests.*', 'customers.customer_name')
->where([
['manifestNumber', 'LIKE', '%' . $manifest . '%'],
['originTerminal','LIKE','%' . $terminal . '%'],
['carrierOrigin', $direction],
])
->orderBy('dateUnloaded', 'DESC')
->whereBetween('dateUnloaded', [$startDate, $endDate])
->limit(100)
->get();
现在,在我继续之前,我会说一切都在这里正常运行,并且有一段时间,添加carrierOrigin
和$direction
时会出现问题。
例如,如果我在页面上将direction
字段留空,则会将$ direction变量设置为等于“'LIKE','%'”。
不幸的是,在where子句中,这不会很好地发送或者什么,因为它不会返回任何结果,但作为测试我是否更改了这一行:
['carrierOrigin', $direction],
到
['carrierOrigin','LIKE','%'],
它成功返回所有结果。那么我应该采用不同的方式格式化输出或发送输出吗?
答案 0 :(得分:1)
您将字符串作为第二个和第三个传递参数。在控制器中使用它:
if(empty($_GET['direction'])){
$direction = ['LIKE', '%'];
} else if ($_GET['direction'] === 'Inbound') {
$direction = ['>', 1];
} else if ($_GET['direction'] === 'Outbound'){
$direction = ['=', 1];
}
然后查询:
$manifests = DB::table('carrier_manifests')
->join('customers', 'carrier_manifests.carrierOrigin', '=', 'customers.id')
->select('carrier_manifests.*', 'customers.customer_name')
->where([
['manifestNumber', 'LIKE', '%' . $manifest . '%'],
['originTerminal','LIKE','%' . $terminal . '%'],
['carrierOrigin', $direction[0], $direction[1],
])
->orderBy('dateUnloaded', 'DESC')
->whereBetween('dateUnloaded', [$startDate, $endDate])
->limit(100)
->get();