Cambiare chiave primaria

Luca Benati

Cambiare chiave primaria è facile, se sai come farlo


Pubblicato da Luca Benati il 05 agosto 2019

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à

Ti interessa un argomento non trattato?