2017-10-04 1 views
1

Je suis nouvelle dans CakePHP et ma table comme:Comment récupérer les données de deux tables dans CakePHP 3

city 
id | name 
1 | city1 
2 | city2 

state 
id | name | cityid 
1 |state1| 2 

alors comment puis-je obtenir le nom de la ville si j'ayant carte d'identité nationale. Dans le contrôleur, j'ai un code comme celui-ci.

public function getCity() 
    { 
     if($this->request->is('ajax')) { 
     $this->autoRender = false; 
    } 

    if ($this->request->isPost()) { 
     $sId= $this->request->data['stateid']; 
    } 
    } 

Dans le $ sId je reçois de la valeur alors comment puis-je écrire une requête.

+2

Je pense que vous devriez lire https://book.cakephp.org/3.0/en/orm/associations.html d'abord – tarikul05

+0

avez-vous fait des associations entre les modèles City et State? –

+0

oui, donnez-lui appartient –

Répondre

0

Si vous avez une relation Appartient entre les deux modèles, il vous suffit de faire une requête sur les États qui contient Ville:

public function getCity() 
{ 
    if($this->request->is('ajax')) { 
     $this->autoRender = false; 
    } 

    if ($this->request->isPost()) { 
     $stateEntity = $this->States->find('all') 
      ->where(['id' => $this->request->data['stateid']]) 
      ->contain(['Cities']) 
      ->first(); 
     // Now the State Object contains City 
     $cityName = $stateEntity->city->name; 
    } 
} 

Pour créer cette relation que vous devez faire comme ceci:

class StatesTable extends Table 
{ 

    public function initialize(array $config) 
    { 
     $this->belongsTo('Cities') 
      ->setForeignKey('city_id') 
      ->setJoinType('INNER'); 
    } 
}