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
}