雄辩的模型->存在不一致

时间:2019-08-02 14:15:48

标签: laravel eloquent

我有几种型号,

VehicleVehiclePreparationRepairOrders

关系是

  • Vehicle有一个VehiclePreparation

  • Vehicle有很多RepairOrders

  • VehiclePreparation有很多RepairOrders

  • VehiclePreparation属于Vehicle

  • RepairOrders属于Vehicle

  • RepairOrders属于VehiclePreparation

车辆准备模型

VehiclePreparation有很多RepairOrders

public function repair_orders()
{
    if($this->exists) {
        return $this->hasMany(RepairOrder::class)
                    ->whereDate('repair_orders.created_at', '>=', $this->created_at);
    }

    return $this->hasMany(RepairOrder::class);
}

注意:我在这里对关系键进行了伪编码。他们在内部工作,所以我有信心这不是我的问题。

我的问题是这个;当我从VehiclePreparationController加载视图并逐步执行代码时,if($this->exists)条件非常有效,并且完全符合我的要求。当我尝试在VehicleController show方法上显示此信息时,出现了我的问题。

VehicleController

public function show(Vehicle $vehicle)
{
    $vehicle->load([
        'vehicle_preparation',
        'vehicle_preparation.repair_orders'
    ]);

    return view('vehicle.show', compact('vehicle'));
}

此代码运行时,我逐步完成了VehiclePreparation模型,并且exists属性始终返回false。这在我的vehicle.show页面上显示了错误的维修单。

所以我确认的是,当我直接加载模型时,exists属性的效果很好,但是当我通过关系加载时,它不是吗?我很沮丧任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

exists是一种返回布尔值的方法。

请使用$this->exists()代替$this->exists

引用documentation