経緯
Eloquent で取得したデータはそのままだと Object の Collection になっているのですが、配列として扱いたいケースが出てきました。そこで先の Collection を配列に変換するメモを残しておきます。
コード
$employeesCollectionObject = $dbConnect->table($this->table)
->where(
[
['id', '=', $id],
]
)
->select(
'employee_id',
'depart',
)
->get();
$employeesCollectionArray = $employeesCollectionObject->map(function ($item, $key) {
return [
'tori_id' => $item->employee_id,
'domain' => $item->depart,
];
});
例えばこうすることで、
object(Illuminate\Support\Collection)[xxx]
protected 'items' =>
array (size=10)
0 =>
object(stdClass)[yyy]
public 'employee_id' => string '001' (length=3)
public 'depart' => string 'sales' (length=5)
1 =>
object(stdClass)[zzz]
public 'employee_id' => string '002' (length=3)
public 'depart' => string 'accounting' (length=10)
2 =>
...
このようなコレクション→オブジェクトの配列が
object(Illuminate\Support\Collection)[xxx]
protected 'items' =>
array (size=10)
0 =>
array (size=2)
'employee_id' => string '001' (length=3)
'depart' => string 'sales' (length=5)
1 =>
array (size=2)
'employee_id' => string '002' (length=3)
'depart' => string 'accounting' (length=10)
...
このようなコレクション→連想配列の配列になります。各プロパティへのアクセス等が犠牲になりますが、今回は織り込み済み。
さらに ->toArray()
を使って
$employeesCollectionArray = $employeesCollectionObject->map(function ($item, $key) {
return [
'tori_id' => $item->employee_id,
'domain' => $item->depart,
];
});
$customersArray = $employeesCollectionArray->toArray();
こうすることで
array (size=10)
0 =>
array (size=2)
'employee_id' => string '001' (length=3)
'depart' => string 'sales' (length=5)
1 =>
array (size=2)
'employee_id' => string '002' (length=3)
'depart' => string 'accounting' (length=10)
...
配列→連想配列にできました。
今回はこれで対応。