我有一个名为show()
的方法,它将从数据库中获取目标,但它首先检查所提供输入中的location
键。
public function show()
{
// Fetch the appropriate destinations
if (Input::has('location')) {
$destinations = Destination::where('type', '=', Input::get('type'))
->where('city', '=', Input::get('location'))
->with('city', 'state', 'type')
->get();
} else {
$destinations = Destination::where('type', '=', Input::get('type'))
->with('city', 'state', 'type')
->get();
}
\Log::debug($destinations);
return $destinations;
这种方法非常好,但只有一半时间。有时它返回一个空数组([]
),有时它会按预期返回所有结果。
起初我以为这是我的JavaScript,但结果是从PHP直接将其记录到控制台也是大部分时间都返回一个空数组,但并非总是如此。
什么可能导致这样的事情发生?
答案 0 :(得分:1)
首先确保始终传递完全相同的数据(记录输入数据)。例如,你通过"汉诺威"第二次"汉诺威" - 它看起来几乎相同,但会完全改变结果。所以你可能应该添加修剪数据(如果你还没有这样做)。
另一个潜在的问题是:
$destinations = Destination::where('type', '=', Input::get('type'))
->where('city', '=', Input::get('location'))
->with('city', 'state', 'type')
->get();
city
表中有destinations
列吗?如果是这样,您是否也与名称city
有关系?对我来说这似乎是错误+此外你永远不应该创建与数据库中的表相同的名称的关系,否则你迟早会遇到麻烦。