更新在 Laravel 中不起作用,如果我使用与数据库中的列名不同的文本框名称

Update does not work in Laravel, If I use different textbox name than column name in database

我的 table 国家/地区有两个字段 country_idcountry_name

文本框正在使用名称 country

<input type="text" class="form-control" value="{{Session::get('name')}}" name="country" >

CountryCONtroller 代码是

public function update(Request $request, $id)
{
 $this->validate($request, [
 'country' => 'required|country_name',
  ]);
   $updateCountry = $request->all();

    //update  data
    country::find($id)->update($updateCountry);
    return redirect('/admin/country');
}

我的模特是

 class country extends Model
{
protected $table = 'country';
protected $fillable = ['country_name'];
public $timestamps = false;
protected $primaryKey = 'country_id';
}

您需要将输入字段中的名称更改为 country_name,因为它应该与列名匹配,所以它应该是这样的,

<input type="text" class="form-control" value="{{Session::get('name')}}" name="country_name" >

如果您不想更改它,那么您应该更改将数组发送到 update 方法的控制器。所以像这样,

public function update(Request $request, $id)
{
 $this->validate($request, [
 'country' => 'required',
  ]);


    //update  data
    country::find($id)->update([
'country_name' => $request->country
]);
    return redirect('/admin/country');
}

试试这个:

country::find($id)->update([
    'country_name' => $request->country
]);