两个表中相同的列名在验证过程中存在冲突。
简化表格和模型:
表用户
上有一个列'名称'class User extends Model {
protected $fillable = ['name'];
public static function rules() {
return [
'name' => 'required|unique:users',
];
}
}
表兄弟
上有一个列'name'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会自动识别。
答案 0 :(得分:0)
我只想更改rules数组中的键。
//User Model
return [
'user_name' => 'required|unique:users',
]
//Sibling Model
return [
'sibling_name' => 'required',
];
在我的HTML中
<!-- User Name -->
<input type="text" class="form-control" name="user_name"/>
<!-- Sibling Name -->
<input type="text" class="form-control" name="sibling_name"/>
希望这有帮助。
更新
您不需要更改数据库中的列名称。
以下是保存模型的方法。
// Method to create User and Sibling
// Create User.
$user = new User;
$user->name = $request->user_name;
$user->save();
//Create Sibling.
$sibling = new Sibling;
$sibling->name = $request->sibling_name;
// Associate User with Sibling
$sibling->save();