我在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
请帮我看看我哪里出错了。
提前致谢。
答案 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);