这个很好用,结合了select()和php的array_column(),一气呵成

    1. // 返回数组
    2. Db::table('think_user')->where('status',1)->column('name');
    3. // 指定id字段的值作为索引
    4. Db::table('think_user')->where('status',1)->column('name', 'id');
    5. // 指定id字段的值作为索引 返回所有数据
    6. Db::table('think_user')->where('status',1)->column('*','id');

    但有一个坑,这儿注意如果用了 * ,那么指定field将没有任何意义,如下

    1. $oldLrPkIdDic = Model::field(['id lid', 'name', 'status'])->where(['id' => 2])->column('*', 'lid')

    按道理是想以lid为索引,返回 lid,name,status 的数组集合,但实际情况却是返回了整个表的字段数据,且字段别名也不生效。

    正确写法如下:

    1. $fields = ['id lid', 'name', 'status'];
    2. $oldLrPkIdDic = Model::field($fields)->where(['id' => 2])->column($fields, 'lid')

    总之,注意,column的第一个参数是字段,可以是单个,也可是多个,那么,其它上面可以这样写了:

    1. $oldLrPkIdDic = Model::where(['id' => 2])->column(['id lid', 'name', 'status'], 'lid')

    注,以下两种写法其实是一个意思

    1. Db::table('think_user')->where('status',1)->column('name', 'id');
    2. Db::table('think_user')->where('status',1)->column(['name'], 'id');

    上面两种的写法获得的结果都是一样的:[id=>name,...]
    而非[id=>['name'=>xx],...]