ciao!
ho creato questa stored procedure:
codice:
DELIMITER //
DROP PROCEDURE IF EXISTS add_brand //
CREATE PROCEDURE add_brand(
IN id INT,
IN nome VARCHAR(25),
IN alias VARCHAR(30),
IN visibile BOOLEAN
)
NO SQL
BEGIN
IF id = 0 THEN
INSERT INTO brands
VALUES (NULL, nome, alias, visibile, NOW(), NOW());
SELECT LAST_INSERT_ID() AS last;
ELSE
UPDATE brands
SET brand_nome = nome,
brand_alias = alias,
brand_visibile = visibile,
brand_modifica = NOW()
WHERE brand_id = id;
SELECT id AS last;
END IF;
END
se la chiami da phpmyadmin, o programmi simili, funziona senza errori.
poi nel mio controller:
codice:
public function add(Request $req) {
$data = $req->json()->all();
$mpUtils = new MPUtils();
if (!empty($data)) {
try {
$res = DB::select('CALL add_brand(?,?,?,?)', array(
$data['brand_id'], trim($data['brand_nome']), trim(data['brand_alias']),
$data['brand_visibile']
));
return response()->json(array(
"res" => "ok",
"id" => $res[0]->last,
"message" => "Operazione avvenuta con successo!"
));
} catch (QueryException $ex) {
return response()->json([
'res' => 'ko',
'message' => 'Errore: ' . $ex->getMessage()
]);
}
} else {
return response()->json(array(
"res" => "ko",
"message" => "Dati mancanti!"
));
}
}
mi restituisce questo:
codice:
{
"res": "ko",
"message": "Errore: SQLSTATE[HY000]: General error: 2053 (SQL: CALL add_brand(201,test,test,0))"
}
ma la cosa bella è che sul db vedo il record aggiunto / modificato.
in sostanza funziona, ma va in eccezione.
è la prima volta che mi capita una cosa del genere.
questo il json che gli passo:
codice:
{
"brand_id": 201,
"brand_nome": "test",
"brand_alias": "test",
"brand_visibile": false
}