2016-12-24 71 views
0

我有以下的列的數據庫表:SELECT查詢不包括列3

  • ID
  • COUNTRY_ID
  • 電子郵件

我想選擇所有不包括idcountry_idSELECT查詢。

我曾嘗試以下:

$getOldvalue = $myTable->find()->where(['country_id' => 10])->first()->toArray(); 
$notAllow = ['id','country_id']; 
foreach ($notAllow as $no) { 
    if(($key = array_search($no, array_keys($getOldvalue))) !== false) { 
     unset(array_keys($getOldvalue)[$key]); 
    } 
} 

這將返回idcountry_id。我如何選擇沒有idcountry_id的所有列?

+0

我希望不要選擇 –

+0

您可以發佈一些示例表數據,以便我們可以看到您正在處理的內容以及預期結果的示例? – LStarky

+0

改進的英文和格式化 –

回答

2

要限制字段提取,您可以使用select()方法,如下圖所示:

$getOldvalue = $myTable->find()->select(['name','email'])->where(['country_id' => 10])->first()->toArray(); 

更多細節see documentation here. 我希望這會爲你工作。

+0

但問題是,這個表有一些動態列,所以只知道兩個已修復的列ID和country_id。 –

+0

您可以構建一個動態列表,添加名稱和電子郵件,以傳遞給select函數。或者你可以得到一切,而不是使用id和country_id。你不想選擇那兩個的原因是什麼?如果您只是通過加載需要的列來加快速度,那麼差別幾乎沒有可能變得明顯。 –