今、図書館に関する情報が含まれているlibrary
というエンティティがあり、library
はhasManyでたくさんのbooks
と紐づいているという状況を考えます。
いま、booksが貸出中か否か、というステータスを持っていて、それはisBorrowedメソッドによって確認できるとします。
liblaryのエンティティーに「貸出中の本が1冊でも存在するか」というメソッドを追加したいとき、collectionクラスを用いて、
public function hasBorrowedBook(){ $library = $this->lazyLoadBooks(); // 紐付くBooksを取得 if(empty($library->books)) return false; return collection($library->books)->some(function($book){ return $book->isBorrowed(); }); }
とすると良いです。
反対に、「全て借りられていない状態か」という記述にしたいときは、
public function hasBorrowedBook(){ $library = $this->lazyLoadBooks(); // 紐付くBooksを取得 if(empty($library->books)) return false; return collection($library->books)->every(function($book){ return ! $book->isBorrowed(); }); }
とすると良いです。