查找Eloquent[Capsulate::select]返回索引数组(而不仅仅是订单号)


looking for Eloquent [Capsule::select] return indexed array (not just order numbers)

我正在处理这个查询。。。。

use Illuminate'Database'Capsule'Manager as Capsule;

[…]

$sql = "SELECT
blabla";
$clients = Capsule::select($sql);
dd($clients);

从这里我得到了这样的东西:

[0]=>
  array(4) {
["house_rec_by_class"]=>
string(8) "-1250.00"
["client_name"]=>
string(11) "lalala"
["client_id"]=>
string(19) "800001D1-14037201481"
["contract_stage"]=>
string(4) "Live"
}
  [1]=>
  array(4) {
   ["house_rec_by_class"]=>
string(7) "-250.00"
["client_name"]=>
string(15) "lolololo"
["client_id"]=>
string(19) "80000180-13939692362"
["contract_stage"]=>
string(4) "Live"
}

现在我想要的是得到这个相同的数组,键中有[client_id],而不是只有连续的数字。。。像

["800001D1-14037201481"]=> ['client_name' => 'lalalala', '...'],
["80000180-13939692362"]=> ['client_name' => 'lolololo', '...']

我知道我可以重新循环数组并分配密钥,只是想知道是否有更好的方法。。谢谢

您需要类似thit:的东西

foreach ($clients as $elem) {
    $id = $elem['client_id'];
    $newClients[$id]['client_name'] = $elem['client_name']; 
    $newClients[$id]['contract_stage'] = $elem['contract_stage'];
    // etc
}

您现在有了一个新的Array$newClients,正如预期的那样。我建议您使用isset来检查是否每个元素都存在。