1
驗證過程中兩個表中的相同列名相沖突。多個具有相同列名的模型的表單驗證
簡表和模型:
有上表是一列 '名稱' 用戶對錶
有一欄 '名稱' 兄弟姐妹
class Sibling extends Model {
protected $fillable = ['name'];
public static function rules() {
return [
'name' => 'required',
];
}
}
從視圖形式的一部分:
<div class="form-group">
<label class="col-md-2 control-label" for="name">User Name</label>
<div class="col-md-10">
<input type="text" class="form-control" name="name"/>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label" for="name">Sibling Name</label>
<div class="col-md-10">
<input type="text" class="form-control" name="name"/>
</div>
</div>
剝去控制器功能:
public function store(Request $request){
$userValidation = $this->validate($request, User::rules());
$siblingValidation = $this->validate($request, Sibling::rules());
$user = new User();
$user->create($request);
$sibling = new Sibling;
$sibling->create($request);
}
顯然改變數據庫列名不一樣會工作。
我的問題:
- 什麼是解決這個問題的常見的方法?
- 如何更改控制器或表單名稱屬性以消除此問題。
附註:
我不使用laravelcollective/HTML,所以沒有它的答案將是可取的,但如果它確實大大簡化解決方案的過程,然後我可能會考慮它。
更新:
是否有使用預先加載或類似的直接保存POST元素,而無需重新分配他們的方法嗎?我正在成像諸如將字段名稱設置爲name="user.name"
和name="sibling.name"
,laravel會自動識別。
這意味着我將不得不相應地更改數據庫列名稱,對吧?或者如果Laravel處於這種模式,它會自動識別它嗎? '$ user-> save()' – MPS
不,你不需要改變列名。 Laravel驗證發生在窗體的'name'屬性上,而不是列名上。更新了答案以顯示如何保存這些值。 – Dwijen
我明白了,所以它只是簡單的PHP,我必須重新分配。在這種情況下,沒有辦法進行急切的加載或這樣可以節省我的重新分配代碼。所以以下將不可能: '$ user-> save($ request) $ sibling-> save($ request)' 謝謝。 我會盡量更新我的問題。 – MPS