2017-10-04 56 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

如果你有兩個型號之間的屬於關聯關係,你只要做對國家,其包含查詢城市:

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