라라벨 5.8.8에서 쿼리 빌더에 forPageBeforeId
메소드가 추가되었습니다. 뭔지 알아보려고 PR을 보는데, 예제에서 컬렉션 메소드 중 concat
과 push
를 쓰더군요.
$posts = new Collection;
$posts = $posts->concat(ChatPost::forPageBeforeId(15, $focused->id)->get()->reverse());
$posts = $posts->push($focused);
$posts = $posts->concat(ChatPost::forPageAfterId(15, $focused->id)->get());
둘 다 제가 잘 안쓰던 메소드들이라 메뉴얼을 찾아봤는데, 읭? 둘이 똑같아 보이는 겁니다.
push 메소드는 컬렉션의 마지막에 아이템을 추가합니다:
concat 메소드는 주어진 배열 또는 컬렉션의 마지막에 값을 추가합니다:
그래서 소스를 봤는데, 소스를 보니 차이점을 알겠더라구요.
/**
* Push all of the given items onto the collection.
*
* @param iterable $source
* @return static
*/
public function concat($source)
{
$result = new static($this);
foreach ($source as $item) {
$result->push($item); // 주어진 아이템들을 push를 사용해서 추가
}
return $result;
}
push
는 하나의 아이템을 컬렉션의 마지막에 추가하는 거고, concat
은 push
메소드를 이용해서 여러 아이템을 한 번에 추가하는 거였어요.
뭐 별로 중요한 얘기는 아니었습니다 하핫