在选择选项 laravel 上保存名称值而不是 id
Posted
技术标签:
【中文标题】在选择选项 laravel 上保存名称值而不是 id【英文标题】:Save name value instead id on select option laravel 【发布时间】:2021-05-31 16:13:42 【问题描述】:当我使用这样的选择选项时,如何存储 name 值而不是 id : p>
<select type="text" name="jenis_hewan_id" id="jenis_hewan_id" class="form-control">
<option value="">Choose Animal</option>
@foreach ($jenisHewan as $data)
<option value="$data->id">$data->nama_jenis_hewan </option>
@endforeach
</select>
我在存储时遇到错误,如下所示:
SQLSTATE[22007]:无效的日期时间格式:1366 不正确的整数值:'Anjing' 列 hewan_siapa
.ras_hewans
.jenis_hewan_id
在第 1 行(SQL:插入到 ras_hewans
(@987654326 @,jenis_hewan_id
) 值(斯芬克斯,安靖))
但是当我使用 <option value="$data->id"
插入时,它可以工作,但它在我的数据库中存储为 'id' 值,而不是 'name' 值,我该如何解决这个问题?
我的控制器:
public function index()
$this->data['jenisHewan'] = JenisHewan::pluck('nama_jenis_hewan');
$this->data['RasHewan'] = RasHewan::paginate(5);
// $this->data['getParentOption'] = JenisHewan::where('id')->pluck('nama_jenis_hewan');
$this->data['sortDataByName'] = RasHewan::latest('nama_ras_hewan');
return view('admin.rashewan.ras-hewan-index',$this->data);
public function store(Request $request)
$namaJenisHewan = (String)$request->jenis_hewan_id;
$validator = $request->validate([
'nama_ras_hewan' => 'required|string|min:3',
'jenis_hewan_id' => 'required|string|',
'parent_ras_jenis_hewan'=> 'string',
], [
'nama_ras_hewan.required' => 'Ras Hewan tidak boleh kosong',
]
);
$rasHewans = new RasHewan();
$rasHewans->nama_ras_hewan = $request->nama_ras_hewan;
$rasHewans->jenis_hewan_id = $namaJenisHewan;
$rasHewans->parent_ras_jenis_hewan = $request->parent_ras_jenis_hewan;
// $rasHewan = New RasHewan;
// $rasHewan->parent_ras_jenis_hewan = $request->$getParentOption;
// $rasHewan->save();
RasHewan::create($validator);
return dd($validator);
// if(validator())
// return redirect()->route('rashewan.index')
// ->with('success', 'Data '.$request->nama_ras_hewan .' telah selesai dibuat.');
// else
// return redirect()->route('rashewan.index')->with('error','Data gagal dibuat');
//
【问题讨论】:
【参考方案1】:问题出在控制器上。首先删除下面的这一行
RasHewan::create($validator);
然后像下面这样修改RasHewan
$rasHewans = new RasHewan();
$rasHewans->nama_ras_hewan = $request->nama_ras_hewan;
$rasHewans->jenis_hewan_id = $namaJenisHewan;
$rasHewans->parent_ras_jenis_hewan = $request->parent_ras_jenis_hewan;
$rasHewans->save();
【讨论】:
我的 RasHewanTable 中的 jenis_hewan_id 是 unsignedBigInteger,它被定义为 JenisHewan 表的外键 是的,BigInteger 仅用于整数值吗? 那么你正在转换为字符串。你可以从这个 $namaJenisHewan = (String)$request->jenis_hewan_id; 中删除字符串删除(字符串) @DaffaRakaMahendra 是的。 dev.mysql.com/doc/refman/8.0/en/integer-types.html @JohnLobo 我只是想尝试使用转换为字符串,但它仍然出现问题,当我删除 (String) 时,SQLSTATE[22007] 仍然出错:无效的日期时间格式:1366 不正确的整数值:。 .......以上是关于在选择选项 laravel 上保存名称值而不是 id的主要内容,如果未能解决你的问题,请参考以下文章
如何在 R Shiny select-Input 中获取特定值而不是选择的打印名称