forget for get

覚えるために忘れる

値オブジェクトの配列から値の配列を取り出す

クリーンアーキテクチャだと$itemIdがintではなく、
ItemIdクラスみたいな値オブジェクト(ValueObject)になっている。

例えば、検索クエリに指定したいときはこんな感じに書く。

Item::where('item_id', $itemId->itemId)->get();

では、$itemIdListのときは、、

$itemIdValueList = [];
foreach ($itemIdList as $itemId) {
  $itemIdValueList[] = $itemId->itemId;
}
Item::whereIn('item_id', $itemIdValueList)->get();

こんな感じで書いていた。

もっと簡潔に書ける。

$itemIdValueList = array_column($itemIdList, 'itemId');
Item::whereIn('item_id', $itemIdValueList)->get();

ちなみにEnumだとこう。

$itemTypeValueList = array_column($itemTypeList, 'value');