Я пытаюсь использовать API для вставки и обновления и у меня проблемы с нулем.Уже искали почти все вопросы и решения, но все еще получили проблему, пожалуйста, помогите мне.
таблица 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
Код:
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';
}
}
и получили эту ошибкуниже:
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)
Ребята, я только что обнаружил, что проблема в этой строке:
$order = $data['order_no'] ? $data['order_no'] : null;
Я думаю, что передать в строку, и его контроллер имеет:
$data['order_no'] = $request->order_no ? $request->order_no : null;
Почему-то я все еще знаю, почему, но я изменяю его на:
$data['order_no'] = $request->order_no ? $request->order_no : 'null';
и возвращаюсь к editBrand ():
$order = ($data['order_no'] != 'null') ? $data['order_no'] : null;
Это работает сейчас.