我正在使用Laravel 5.2,我创建了一对一的关系,如下所示。
done
这完美无缺。在某些情况下,我需要通过从车辆中删除特定的驱动程序来打破这种关系。
$driver = Driver::find($driver->id);
$vehicle = Vehicle::find($vehicleId);
$vehicle->driver()->associate($driver);
$vehicle->save();
但这不起作用。我尝试了其他一些方法。
$driver = Driver::find($driver->id);
$vehicle = Vehicle::find($vehicleId);
$vehicle->driver_id->NULL;
$vehicle->save();
以下是两种型号。
$vehicle->driver()->delete();
$vehicle->driver()->dissociate();
在我的案例中没有任何工作。谁能请一个提示,那里有什么不对。
答案 0 :(得分:1)
我认为你需要:
$vehicle->driver_id = NULL;
$vehicle->save();
答案 1 :(得分:0)
如果您在车辆和驱动程序之间使用外键,则只需要删除子表条目或使引用Null.Is driver_id为空。 在迁移中尝试这个, $ table->整数(' driver_id') - > unsigned() - > nullable() - >默认(null); 希望这能解决你的问题。
答案 2 :(得分:0)
首先,我认为您在插入数据方面做错了
$driver = Driver::find($driver->id);
$vehicle = Vehicle::find($vehicleId);
$vehicle->driver()->associate($vehicle);
$vehicle->save();
应该是
$driver = Driver::find($driver->id);
$vehicle = Vehicle::find($vehicleId);
$vehicle->driver()->associate($driver);
$vehicle->save();
您的模型应如下所示
class Driver extends Model
{
public function vehicle()
{
return $this->belongsTo(Vehicle::class);
}
}
class Vehicle extends Model
{
protected $primaryKey = 'vehicle_number';
public $incrementing = false;
public function driver()
{
return $this->hasOne(Driver::class);
}
}
尝试一下,让我知道它是否对你有帮助