我有一个包含以下字段的表单:name、fullname、description、email、password、state、city(当选择state时,通过Ajax填充)和photo(上传的图片)。
public function up()
{
Schema::create('states', function(Blueprint $table)
{
$table->increments('id');
$table->string('acronym');
$table->string('name');
});
Schema::create('cities', function(Blueprint $table)
{
$table->increments('id');
$table->string('name');
$table->integer('state_id')->unsigned();
$table->foreign('state_id')->references('id')->on('states');
});
Schema::create('users', function(Blueprint $table)
{
$table->increments('id');
$table->string('name');
$table->string('fullname');
$table->string('photo');
$table->text('description');
$table->string('email');
$table->string('password', 60);
$table->integer('city_id')->unsigned();
$table->foreign('city_id')->references('id')->on('cities');
$table->rememberToken();
});
}
我的问题是,当我按下提交按钮时,出现以下错误消息:
数据库状态[23000]:完整性约束冲突:1452 0x0060无法新增或更新子列:外键约束失败(yearbook
. users
,约束users_city_id_foreign
外键(city_id
)引用cities
(id
))(SQL:插入到users
(name
,description
,email
)值中(加布里埃尔,说明,www.example.com))email@gmail.com))
因此,问题与city_id是一个外键有关(表单选项中的'value'属性是id)。
<option value="281">Abaíra</option>
但是当我尝试通过phpmyadmin插入时,它插入没有错误。
- 那问题出在哪里**
下面是我在控制器上的save方法:
public function saveRegister()
{
$rules = array(
'name' => 'required',
'description' => 'required',
'fullname' => 'required',
'email' => 'required',
'password' => 'required',
'state' => 'required',
'city' => 'required',
'photo' => 'required',
'photo' => 'image|max:3000000',
);
$val = \Validator::make(\Input::all(), $rules);
if($validar->fails()){
return redirect('register')->withErrors($val);
} else {
$user = new User(array(
'name' => \Input::get('name'),
'description' => \Input::get('description'),
'fullname' => \Input::get('fullname'),
'email' => \Input::get('email'),
'city_id' => \Input::get('city'),
));
$user->timestamps = false;
$user->save();
return redirect('register')->with('message', 'User saved!');
}
}
编辑:修复了saveRegister()方法中的city_id。
3条答案
按热度按时间vtwuwzda1#
代替
这样做
或更改模型中的
$fillable
属性4ioopgfo2#
这可能是因为您的cities.id字段不是无符号的,而您的FK字段是无符号的。关系中使用的所有列必须完全匹配。
尝试将代码更改为:
iqxoj9l93#
数据库状态[23000]:完整性约束冲突:1048列"id"不能为空(连接:mysql,SQL语言:插入到
prac
(id
,name
,email
,password
)值(?,?,?,?)中,单击"提交"按钮时出现此错误。