Récupérer des données simplifiées

Comment récupérer des données sous la forme ID => Libellé

Il arrive de vouloir récupérer des données sous la forme d'un tableau associatif Identifiant => Libellé

C'est par exemple pratique dans le cas de liste de valeurs exploitées dans des select.

$rows = $this->collector['example']->get(array('is_valid' => 1));
<span><br /><br />Array
(
    [0] =<span class="entity"></span> Array
        (
            [id_example] =<span class="entity"></span> 1
            [lib] =<span class="entity"></span> Item 1
            [created_at] =<span class="entity"></span> 2019-05-03 14:33:10
            [n_order] =<span class="entity"></span> 1
            [is_valid] =<span class="entity"></span> 1
            [ex_type] =<span class="entity"></span> EX1
        )

    [1] =<span class="entity"></span> Array
        (
            [id_example] =<span class="entity"></span> 3
            [lib] =<span class="entity"></span> Item 3
            [created_at] =<span class="entity"></span> 2019-05-03 14:33:21
            [n_order] =<span class="entity"></span> 3
            [is_valid] =<span class="entity"></span> 1
            [ex_type] =<span class="entity"></span> EX2
        )

)</span>

La méthode getKv (pour getKeyValue) retourne en clé l'identifiant de la ligne et en valeur la colonne qui sert de libellé :

$rows = $this->collector['example']->getKv(array('is_valid' => 1));
<span>Array
(
    [1] =<span class="entity"></span> Item 1<br />
    [3] =<span class="entity"></span> Item 3<br />
<span id="line121" span="">)</span></span>

Le comportement par défaut est de récupérer la colonne "lib".
Cependant, certaines tables n'utilisent pas ce nom de colonne pour représenter le libellé d'une donnée.

Il est alors possible de définir dans la classe représentant le collector le champ à utiliser :

protected $_libField = 'AUTRE CHAMP'; <br /><br />

Il existe également la méthode getKandMore qui va avoir le même fonctionnement que getKv, mais avec la possibilité d'ajouter des valeurs supplémentaires, comme dans l'exemple ci-dessous :

function getKandMore($fields=array(),$conditions = array(), $order = '', $limit = '') { }
$rows = $this->collector['example']->getKandMore(array('lib','created_at'), array('is_valid'=>1));
Array
(
    [1] = Item 1 2019-05-03 14:33:10
[3] = Item 3 2019-05-03 14:33:21 )