2016-12-24 27 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。你不想选择那两个的原因是什么?如果您只是通过加载需要的列来加快速度,那么差别几乎没有可能变得明显。 –