Bonjour à tous!
Voilà petit soucis qui me tient en haleine depuis 2-3 heures.
Je suis en train de mettre à jours une base de données des villes de france et il me manque 2 champs tout bête: departments_id et regions_id.

Le truc c'est que je ne sais pas comment les updater.
j'ai commencé par chercher toutes les villes de l'Ain par

public function index_fr() {
        if (!empty($this->request->data)) {
            $conditions = array('department' =>'01');
            $cities = $this->City->find('all', array(
                'conditions' => $conditions
                ));
            $this->set(compact('cities'));
    }

et ça marche mais je ne vois pas trop comment faire mon save?
Merci d'avance pour l'aide que vous pouvez m'apporter!

4 réponses


Mikachu
Réponse acceptée

Je piges pas un truc simplement pour le moment, pourquoi avoir un champ department (01) et un champ department_id ?

Car la a premiere vue les 2 on le meme role. Si oui, tu as juste à virer departement_id et a renommer department en department_id et le tour est joué pour department.

Ensuite pour region_id dans cities tu fais un updateAll, du genre:

Doc saveAll

public function index_fr() {
    $conditions = array('department_id' =>'01');
    // sans containable
    $this->loadModel('Departement');
    $dep = $this->Departement->find('all', array(
    // avec containable 
    $dep = $this->City->Departement->find('all', array(
    // au choix
        'fields' => array('id', 'regions_id'),     
        'conditions' => $conditions;
    ));
    $this->City->updateAll(
         array('City.region_id' => $dep'Departement']'region_id']), $conditions)
    );
}

Je penses que cela devrait le faire.

Peux tu en donner la structure des tables ville departments et regions please ?

mimosa21
Auteur

Merci de m'accorder un peu de temps mikachu

cities:

  • id,
  • name varchar (exemple Bourg-En-Bresse)
  • zipcode varchar (exemple 01000)
  • department varchar (exemple 01)
  • departments_id int
  • regions_id int

departments:

  • id (exemple 1)
  • num varchar (exemple 01)
  • name varchar (exemple Ain)
  • regions_id int (exemple 22)

regions:

  • id (exemple 22)
  • name varchar (exemple Rhône-Alpes)
mimosa21
Auteur

Merci c'est tout à fait ça.

Je mets un departments_id et un regions _id pour coller à ma méthode, ça me donne des repères. :)