【发布时间】:2014-08-14 06:31:32
【问题描述】:
我有一个车辆表。车辆可以转让。当车辆转移给新所有者时,表格中会添加另一行,其中包含不同的详细信息。旧车的vehicles_transfer 列填充了新行的 id。
车辆可以多次转移。这是车辆表:
+--------------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+------------------+------+-----+---------------------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| vehicles_vin | varchar(255) | NO | UNI | NULL | |
| vehicles_model_id | int(11) | NO | | NULL | |
| vehicles_transfer | int(11) | YES | | NULL | |
+--------------------+------------------+------+-----+---------------------+-----------------
现在我陷入了困境。我有一辆车转让了 5 次。
当它第一次注册时,它的 id 是5,它被转移给了一个拥有车辆表 id 7 的新所有者。所以vehicles_transfer 列填充了7。 vehicles_transfer 列说这辆车被转移到了填写的id。
然后车辆 id 7 被进一步转移到 id 12,所以,它的 vehicles_transfer 列被填充了 12。
这个过程又发生了 3 次。
现在我有了当前车辆的 ID,我想知道这辆车之前已经转移了多少次。我还创建了一个函数getOldVehicleId(),它采用车辆的id 并提供vehicles_transfer 值。
但我不知道如何获取所有旧的 vehicles_transfer 值?
编辑: 基本上我想让这个动态
$oldVehicle1 = Vehicle::withTrashed()->where('vehicles_transfer', $id)->first();
if($oldVehicle1){
$oldVehicleIds[] = $oldVehicle1->id;
$oldVehicle2 = Vehicle::withTrashed()->where('vehicles_transfer', $oldVehicle1->id)->first();
if($oldVehicle2){
$oldVehicleIds[] = $oldVehicle2->id;
$oldVehicle3 = Vehicle::withTrashed()->where('vehicles_transfer', $oldVehicle2->id)->first();
if($oldVehicle3){
$oldVehicleId[]s = $oldVehicle3->id;
$oldVehicle4 = Vehicle::withTrashed()->where('vehicles_transfer', $oldVehicle3->id)->first();
}else return $oldVehicleIds;
}else return $oldVehicleIds;
}
【问题讨论】:
-
如果每次转移车辆时都添加一行,那么计算行数就会给出转移计数?不会吗?
-
不会的。所有车辆都存在于车辆表中(包括所有其他车辆)。
-
我的意思是,按 VehicleId 和 sql 分组
-
我没明白你的意思。可以举个例子吗?
标签: php mysql sql laravel relation