In questo articlo andremo a vedere come impostare una chiave primaria differente daa quella utilizzata di default che è "id". Facciamo l'esempio di avere una tabella che utilizza come chiave primaria chiamata "numero_cliente" invece di "id".
Per fare in modod che tutto funzione come di consueto noi dovremo apportare la modifica in tre punti diversi in tre file distinti:
- Nel file del Model
- Nel file config_list.yaml
- Nel file config_form.yaml
Nel Model dobbiamo aggiungere la variabile pubblica $primaryKey
/**
* Customer Model
*/
class Customer extends Model {
/**
* @var string The database table used by the model.
*/
public $table = 'clienti';
public $primaryKey = 'numero_cliente';// Notare la K maiuscola
...
In config_list.yaml troviamo la variabile recordUrl: che dobbiamo modificare. Per impostazione predefinita ha :id come ultimo parametro, andiamo a sostituire questo con la nostra chiave primaria "numero_cliente"
recordUrl: author_name/client/customeredit/update/:numero_cliente
In config_form.yaml troviamo la variabile redirect: sotto a create: Anche qui andremo a sostituire :id con la nostra chiave primaria
redirect: author_name/client/customeredit/update/:numero_cliente
Fatto questo siamo pronti a continuare lo sviluppo con la nostra nuova chiave primaria.
Nota
Se la nuova chiave primaria non è di tipo numerico bisognerà aggiungere nel Model anche;
public $incrementing = false;
Altrimenti avremo un problema di redirecting durante la creazione del nuovo record.
Buon October a tutti!
Lunga vita e prosperità