我有3个表:vehicles
,drivers
和vehicle_driver_owners
。
drivers
表包含所有已注册的驱动程序。 vehicles
表包括所有注册的车辆。 vehicle_driver_owners
是一个数据透视表。它显示哪些驾驶员充当特定车辆的所有者。 (车辆可以有多个车主,反之亦然)
我在所有3个模型中建立了关系(Vehicle
,Driver
和VehicleDriverOwner
)
这是车辆型号
use Illuminate\Database\Eloquent\SoftDeletingTrait;
class Vehicle extends Eloquent {
use SoftDeletingTrait;
protected $table = 'vehicles';
protected $softDelete = true;
// EACH VEHICLE CAN BELONG TO MANY OWNERS
public function owners(){
return $this->belongsToMany('Driver', 'vehicle_driver_owners', 'vehicle_driver_owners_vehicle_id', 'vehicle_driver_owners_driver_id');
}
}
这是Driver
模型
class Driver extends Eloquent{
protected $table = 'drivers'
//EACH DRIVER CAN BE OWNER OF MANY VEHICLES
public function vehicleOwner(){
return $this->belongsToMany('Vehicle', 'vehicle_driver_owners', 'vehicle_driver_owners_driver_id', 'vehicle_driver_owners_vehicle_id');
}
}
这是VehicleDriverOwner
模型
use Illuminate\Database\Eloquent\SoftDeletingTrait;
class VehicleDriverOwner extends Eloquent {
use SoftDeletingTrait;
protected $table = 'vehicle_driver_owners';
protected $fillable = ['vehicle_driver_owners_vehicle_id', 'vehicle_driver_owners_driver_id'];
protected $softDelete = true;
}
我试图使用laravel的softDelete功能。一辆车有3个车主,我想删除其中一个。我还想在数据库中保留该条目。所以我使用了softDelete功能。删除该特定所有者后,deleted_at
表格中该行的vehicle_driver_owners
列已填充日期。
但现在我正试图使用Vehicle::find(5)->owners
查看车辆所有者。它显示已删除的所有者
答案 0 :(得分:0)
将whereNull(' vehicle_driver_owners.deleted_at')添加到Vehicle中的函数所有者
use Illuminate\Database\Eloquent\SoftDeletingTrait;
class Vehicle extends Eloquent {
use SoftDeletingTrait;
protected $table = 'vehicles';
protected $softDelete = true;
// EACH VEHICLE CAN BELONG TO MANY OWNERS
public function owners(){
return $this->belongsToMany('Driver', 'vehicle_driver_owners', 'vehicle_driver_owners_vehicle_id', 'vehicle_driver_owners_driver_id')
->whereNull('vehicle_driver_owners.deleted_at');
}
}