2014-01-10 4 views
0

У меня есть класс ниже для книги. На данный момент у него есть один способ извлечения книги из базы данных по идентификатору. Очевидно, другие методы могут быть добавлены, чтобы удалить книгу, сохранить новую книгу и т.д.Как получить список объектов

class Book { 

Public $id 
public $name; 
public $price; 
public $isbn; 

public function getBook($id) { 

    $sql = 'SELECT id, name, price, isbn FROM book WHERE id = ' . (int) $id; 

    $row = /* DB functions here to get a matching row */ 

    $this->name = $row['name']; 
    $this->price = $row['price']; 
    $this->isbn = $row['isbn']; 
    return TRUE; 
} 
} 

Вот мой вопрос, а что-то я никогда не был в состоянии добраться до нижней части. Как получить список всех книг или книг, начинающихся с буквы «А»?

Чтобы уточнить, я знаю, как запросить базу данных и выполнить цикл через результирующий набор. Конструктор может быть добавлен в вышеприведенный класс для создания экземпляра одной книги из каждого результата. Но куда должен идти мой метод «поисковых книг»? Должен ли он быть частью класса книги? Или должен ли метод поиска быть частью совершенно другого класса, возможно, под названием BookShop?

Надеюсь, я объяснил это правильно. Я вижу так много примеров, когда объекты обрабатываются сингулярно, но я не могу понять, как и где следует создавать список или коллекцию объектов.

+3

Ваш пример в основном нарушает принцип единой ответственности. В двух словах: у вас будет ваша модель («Книга») и класс, ответственный за доступ к базе данных («BookRepository»), где у вас могут быть функции, запрашивающие названия книг и т. Д. – nietonfir

ответ

-1

Как получить список всех книг или книг, начинающихся с буквы ?

Все книги: SELECT id, name, price, isbn FROM book

Все книги, которые начинаются с А:

SELECT id, name, price, isbn FROM book WHERE name LIKE 'A%'

ИЛИ:

SELECT id, name, price, isbn FROM book WHERE SUBSTRING(name, 1, 1) = 'A'

Как где методы будут идти, искать «Репозиторий» - книга не должна создавать ее Эльф.

+0

Почему downvotes? – Jessica

Смежные вопросы