我有一个带有下拉选项的表单,可让您为特定型号选择外键。顶部选项总是类似
<option value="">please select</option>
因此,当我使用表单中的数据填充模型时,
$booking = new Booking($data);
并试着保存它,
$booking->save();
它总是失败,因为它违反了FK约束,因为Laravel不够聪明,不能为我取消这个字段。因此我想出了这个小小的黑客:
public function save() {
if(!$this->vehicle_id) $this->vehicle_id = null;
if(!$this->driver_id) $this->driver_id = null;
parent::save();
}
但是没有办法告诉Laravel哪些字段代表FK,如果它们是整数&gt;则应该设置为null。 0?
答案 0 :(得分:14)
一种可能的解决方案是对所有外键使用set mutators:
public function setVehicleIdAttribute($value) {
$this->attributes['vehicle_id'] = $value ?: null;
}
public function setDriverIdAttribute($value) {
$this->attributes['driver_id'] = $value ?: null;
}