laravel在关系中不起作用

时间:2018-01-08 18:54:04

标签: php laravel eloquent laravel-eloquent

我在mysql中有两个表,1。车辆和2.Locations 我正在使用雄辩的关系来定义车辆表与地点的关系。

这是我的车辆模型的外观。

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行调用成员函数whereHas()on null

请帮我看看我哪里出错了。

提前致谢。

3 个答案:

答案 0 :(得分:4)

将其更改为:

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

答案 1 :(得分:1)

使用不带括号的关系方法返回collection,使用括号返回可以添加其他查询方法的关系,例如whereBetween:

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

答案 2 :(得分:1)

您从其他关系模型location

发送查询

您的查询看起来像location->location

请检查此代码

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