{"elements":[{"id":7006,"title":"Convenzioni Database","body":"<section class=\"da-section\">\n  <div class=\"container\">\n    <h2>Regole di nomenclatura<\/h2>\n    <p class=\"lead\">In DressAPI il database non &egrave; solo un contenitore di dati: &egrave; la fonte da cui il framework deriva automaticamente la struttura delle API, le relazioni tra le entit&agrave; e i comportamenti predefiniti dei campi. Seguire le convenzioni di nomenclatura corrette &egrave; quindi essenziale per ottenere il massimo dall&rsquo;automazione del framework.<\/p>\n    <div class=\"text-center my-4\"><img src=\"\/assets\/images\/auto-relations.png\" alt=\"Relazioni automatiche tra tabelle\" class=\"img-fluid rounded shadow\" style=\"max-width: 80%;\"><\/div>\n\n    <div class=\"table-responsive\">\n      <table class=\"table table-striped\">\n        <thead class=\"table-dark\">\n          <tr><th>Elemento<\/th><th>Convenzione<\/th><th>Esempio<\/th><\/tr>\n        <\/thead>\n        <tbody>\n          <tr><td>Tabelle utente<\/td><td>lowercase, snake_case<\/td><td><code>products<\/code>, <code>order_items<\/code><\/td><\/tr>\n          <tr><td>Tabelle framework<\/td><td>prefisso <code>_<\/code><\/td><td><code>_user<\/code>, <code>_role<\/code>, <code>_permission<\/code><\/td><\/tr>\n          <tr><td>Chiave primaria<\/td><td>sempre <code>id<\/code><\/td><td><code>id INT AUTO_INCREMENT PRIMARY KEY<\/code><\/td><\/tr>\n          <tr><td>Foreign key<\/td><td><code>id_{tabella_riferita}<\/code><\/td><td><code>id_category<\/code>, <code>id_user<\/code><\/td><\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n\n    <h3 class=\"mt-5\">Rilevamento automatico dei tipi di campo<\/h3>\n    <p>DressAPI rileva automaticamente il tipo di widget UI dal nome della colonna:<\/p>\n    <div class=\"table-responsive\">\n      <table class=\"table table-striped\">\n        <thead class=\"table-dark\">\n          <tr><th>Pattern nel nome<\/th><th>Tipo rilevato<\/th><th>Widget UI<\/th><\/tr>\n        <\/thead>\n        <tbody>\n          <tr><td><code>*_img<\/code>, <code>*_image<\/code>, <code>photo*<\/code><\/td><td>Immagine<\/td><td>Uploader immagini<\/td><\/tr>\n          <tr><td><code>*file*<\/code>, <code>*attachment*<\/code>, <code>*document*<\/code><\/td><td>File<\/td><td>Uploader file<\/td><\/tr>\n          <tr><td><code>*color*<\/code>, <code>*colour*<\/code><\/td><td>Colore<\/td><td>Color picker<\/td><\/tr>\n          <tr><td><code>*pwd*<\/code>, <code>*password*<\/code>, <code>*secret*<\/code><\/td><td>Password<\/td><td>Input nascosto + hash automatico<\/td><\/tr>\n          <tr><td><code>*phone*<\/code>, <code>*tel*<\/code>, <code>*mobile*<\/code><\/td><td>Telefono<\/td><td>Input tel<\/td><\/tr>\n          <tr><td><code>*url*<\/code>, <code>*link*<\/code>, <code>*website*<\/code><\/td><td>URL<\/td><td>Input url<\/td><\/tr>\n          <tr><td><code>*email*<\/code>, <code>*mail*<\/code><\/td><td>Email<\/td><td>Input email<\/td><\/tr>\n          <tr><td><code>*text*<\/code>, <code>*content*<\/code>, <code>*body*<\/code>, <code>*description*<\/code><\/td><td>Testo lungo<\/td><td>Textarea \/ Editor WYSIWYG<\/td><\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n    <p class=\"mt-3\">Il semplice atto di dare un nome convenzionale a una colonna determina automaticamente il tipo di widget nell'interfaccia, senza scrivere configurazione.<\/p>\n  <\/div>\n<\/section>\n\n<section class=\"da-section text-center\">\n  <a href=\"\/tutorials\" class=\"btn btn-outline-primary\">&larr; Torna ai Tutorial<\/a>\n<\/section>","description":"Regole di nomenclatura e rilevamento automatico tipi campo","meta_keywords":"","visible":"yes","status":"public","creation_date":"0000-00-00","id__user":1,"priority":0,"groupname":"TUTORIAL"}],"module":"pages","permissions":{"can_read":true},"main_item_title":"title","related_tables":[{"name":"Newsonpage","module":"newsonpage","FK":"id_cmspage","permissions":[]}],"page_info":{"table":"","key":"id","url":"\/pages","url_list":"\/pages","filters":{"id":["=","7006"]},"pagination":{"total_items":23,"page":1,"total_pages":2,"step":1,"items_per_page":20,"url_prev":"\/pages","url_next":"\/pages\/p\/2","url_tmpl":"\/pages\/p\/[[p]]","url_tmpl_with_order":"\/pages\/p\/[[p]]\/ob\/[[ob]]"},"order":{"field":"id","type":"DESC","url_tmpl":"\/pages\/p\/[[p]]"},"module":{"title":"Pages","description":"List of pages","name":"pages"},"current":{"title":"Pages","description":"List of pages","name":"pages","url":"\/tutorials\/database"}},"components":{"alert":{"alert1":[{"type":"warning","message":"OK COMPONENT!"},{"type":"danger","message":"ERROR COMPONENT!"}]}},"messages":[]}