sha*_*ane 5 php mysql laravel laravel-5.8
我正在尝试插入和更新的api,并且在null上遇到问题。已经搜索了几乎所有问题和解决方案,但仍然存在问题,请帮助我。
表DDL:
CREATE TABLE `brand` (
`brand_id` int(11) NOT NULL AUTO_INCREMENT,
`brand_name_en` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL,
`brand_name_ch` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL,
`order_no` int(5) DEFAULT NULL,
PRIMARY KEY (`brand_id`),
KEY `index_brand` (`brand_name_en`)
) ENGINE=InnoDB AUTO_INCREMENT=126 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
Run Code Online (Sandbox Code Playgroud)
码:
public function editBrand($data){
try{
$en = $data['brand_name_en'];
$ch = $data['brand_name_ch'];
$order = $data['order_no'] ? $data['order_no'] : null;
$brand_id = $data['brand_id'];
$this->db = DB::table('brand')
->where('brand_id', $brand_id)
->update(["brand_name_en" => $en, "brand_name_ch" => $ch, "order_no" => $order]);
return $this->db;
}catch(\Exception $e) {
$this->log('BrandRepo-editBrand Error');
$this->log($e->getMessage());
return 'SQL ERROR';
}
}
Run Code Online (Sandbox Code Playgroud)
并在下面得到此错误:
General error: 1366 Incorrect integer value: 'null' for column 'order_no' at row 1 (SQL: update `brand` set `brand_name_en` = TEST, `brand_name_ch` = ??, `order_no` = null where `brand_id` = 122)
Run Code Online (Sandbox Code Playgroud)
伙计们,我刚刚发现问题出在这一行:
General error: 1366 Incorrect integer value: 'null' for column 'order_no' at row 1 (SQL: update `brand` set `brand_name_en` = TEST, `brand_name_ch` = ??, `order_no` = null where `brand_id` = 122)
Run Code Online (Sandbox Code Playgroud)
我猜传入的是字符串,它的控制器有:
$order = $data['order_no'] ? $data['order_no'] : null;
Run Code Online (Sandbox Code Playgroud)
我仍然不知道为什么,但是我将其更改为:
$data['order_no'] = $request->order_no ? $request->order_no : null;
Run Code Online (Sandbox Code Playgroud)
然后回到editBrand():
$data['order_no'] = $request->order_no ? $request->order_no : 'null';
Run Code Online (Sandbox Code Playgroud)
现在可以使用了。
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |