Apart from loading the model itself, You can use a model in a controller other than its own as long as there is a relation between the two models. For example, consider the following relation:
"Books" Model BelongsTo "Category" Model
In this scenario, you can use
$this->Book->Category->find() inside BooksController
as well as
$this->Category->Book->find() inside CategoriesController
Coming to your case, it would help if you post your Database Schema. Nevertheless, to find a book, I assume you are using certain parameters like Categories, Genres, Publishers etc. Assuming each parameter will have it's own database table and model, your search hops would be as follows:
Page 1: List of Categories with Check boxes for Selection
- Function - Category Controller's index()
- View - /app/views/categories/index
- Passes to - Genres Controller's search()
Page 2: List of Genres with Check boxes for selection
- Function - Genre Controller's search()
- View - /app/views/genres/search
- Passes to - Publishers Controller's search()
Page 3: List of Publishers with Check boxes for selection
- Function - Publisher Controller's search()
- View - /app/views/publishers/search
- Passes to - Books Controller's results()
Page 4: List of Books filtered according to the given parameters
- Function - Book Controller's results()
- View - /app/views/books/results
- Passes to - None
I tried to be as guiding as possible, leave comment if you are still not clear how to go about searching for books. If you need help with passing data from one controller to another, read the CakePHP Manual (http://book.cakephp.org/view/57/Controller-Methods) or Google using "cakephp passing data from one controller to another" as keywords.