我有一个带有下拉选项的表单,可以让您为特定模型选择外键.顶级选项总是类似的
<option value="">please select</option>
Run Code Online (Sandbox Code Playgroud)
所以当我用表格中的这些数据填充我的模型时,
$booking = new Booking($data);
Run Code Online (Sandbox Code Playgroud)
并尝试保存它,
$booking->save();
Run Code Online (Sandbox Code Playgroud)
它总是失败,因为它违反了FK约束,因为Laravel不够聪明,不能为我取消这个字段.因此我想出了这个小小的黑客:
public function save() {
if(!$this->vehicle_id) $this->vehicle_id = null;
if(!$this->driver_id) $this->driver_id = null;
parent::save();
}
Run Code Online (Sandbox Code Playgroud)
但是,没有办法告诉Laravel哪些字段代表FK,如果它们的整数> 0,则应该设置为null?
mpe*_*pen 15
一种可能的解决方案是对所有外键使用set mutators:
public function setVehicleIdAttribute($value) {
$this->attributes['vehicle_id'] = $value ?: null;
}
public function setDriverIdAttribute($value) {
$this->attributes['driver_id'] = $value ?: null;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5958 次 |
最近记录: |