代码之家  ›  专栏  ›  技术社区  ›  Max Ahmed

laravel,其中关系不起作用

  •  2
  • Max Ahmed  · 技术社区  · 7 年前

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

    以下是我的车辆模型的外观。

    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()

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

    提前谢谢。

    3 回复  |  直到 7 年前
        1
  •  5
  •   Alexey Mezenin    7 年前

    将其更改为:

    App\VehicleModel::find(3)->locations()->whereBetween('time', $range)->get();
    
        2
  •  1
  •   Etibar    7 年前

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

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

    请检查此代码

    App\VehicleModel::find(3)->locations()->whereBetween('time', $range);
    
        3
  •  1
  •   YouneL    7 年前

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

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