laravel wherebetween in relations 不起作用

laravel wherebetween in relations not working

我在 mysql 中有两个 table,1. 车辆和 2.Locations 我正在使用 eloquent 关系来定义车辆 table 与位置的关系。

这是我的车辆模型的样子。

namespace App;

use Illuminate\Database\Eloquent\Model;
class VehicleModel extends Model {
function locations(){
        return $this->hasMany("App\locations", "vehicle_id", "id");
    }
}

我正在尝试 运行 一个可以让我在两个给定时间之间获取特定车辆位置的查询。

这是我正在尝试做的事情:

App\VehicleModel::find(3)->location->whereBetween('locations.time', $range); 

我期望上面的查询会给我日期之间的位置,当我 运行 没有关系时它会这样做。但是当我在关系中做 运行 时,我收到了一个意外错误。

PHP 错误:在第 1 行的 null 上调用成员函数 whereHas()

请帮我看看哪里错了。

提前致谢。

Using relationship method without parentheses return a collection, use parenthesis to return the relationship where you can add other query methods like whereBetween:

关系方法 return
App\VehicleModel::find(3)->location()->whereBetween('time', $range)->get(); 

您从其他关系模型发送查询location

您的查询如下所示location->location

请检查此代码

App\VehicleModel::find(3)->locations()->whereBetween('time', $range);

改为:

App\VehicleModel::find(3)->locations()->whereBetween('time', $range)->get();