2017-10-04 14 views
1

私は、CakePHPで新しいですし、私のテーブルに二つのテーブルからデータを取得する方法のように:CakePHPの3

city 
id | name 
1 | city1 
2 | city2 

state 
id | name | cityid 
1 |state1| 2 

ので、私は、ステートIDを持つ場合、私は都市名を得るのですか。 コントローラには、このようなコードがあります。

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

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

$ sIdでは、どのように値を取得するのですか?

+2

https://book.cakephp.org/3.0/en/orm/associations.html最初に – tarikul05

+0

市と州のモデルの関連付けを済ませてください。 –

+0

はい、それにbelongsToを与えます –

答えて

0

あなたは、両方のモデル間のbelongsToの関係を持っている場合は、あなただけの都市が含まれている国に問い合わせなければならない:あなたはこのように行う必要があり、この関係を作成するには

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; 
    } 
} 

を:

class StatesTable extends Table 
{ 

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