Laravel模型只返回结果的一半时间

时间:2015-12-31 15:31:25

标签: php laravel eloquent

我有一个名为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直接将其记录到控制台也是大部分时间都返回一个空数组,但并非总是如此。

什么可能导致这样的事情发生?

1 个答案:

答案 0 :(得分:1)

首先确保始终传递完全相同的数据(记录输入数据)。例如,你通过"汉诺威"第二次"汉诺威" - 它看起来几乎相同,但会完全改变结果。所以你可能应该添加修剪数据(如果你还没有这样做)。

另一个潜在的问题是:

$destinations = Destination::where('type', '=', Input::get('type'))
      ->where('city', '=', Input::get('location'))
      ->with('city', 'state', 'type')
      ->get();

city表中有destinations列吗?如果是这样,您是否也与名称city有关系?对我来说这似乎是错误+此外你永远不应该创建与数据库中的表相同的名称的关系,否则你迟早会遇到麻烦。