В Active Record
объектный экземпляр привязан к единственной строке в таблице.
Как можно тогда объяснить такие методы? Ведь они не соответствуют записи в бд?
Джойны
$book = Book::all(array('joins' => array('author')));
sql => SELECT `books`.* FROM `books`
INNER JOIN `authors` ON(`books`.author_id = `authors`.id)
Агрегатные функции
Book::find('all', array('select' => 'avg(price) as avg_price, avg(tax) as avg_tax'));
sql => SELECT avg(price) as avg_price, avg(tax) as avg_tax FROM `books` LIMIT 5,10
Группировка
Book::all(array('group' => 'price'));
sql => SELECT * FROM `books` GROUP BY price
Группировка + having
Book::all(array('group' => 'price', 'having' => 'price > 45.00'));
sql => SELECT * FROM `books` GROUP BY price HAVING price > 45.00
Или же вообще нативный запрос
$book = Book::find_by_sql('select title from `books`');
Объясните пожалуйста. Заранее спасибо
Всё довольно просто. В таких случаях вы выбираете не одну модель, а сразу коллекцию моделей (или массив). Например, в известном фреймворке Laravel имеется возможность получить сразу несколько моделей следующим образом:
$models = Model::where('id', '>', '2')->get();
Здесь выберутся все модели, id которых больше двух. Вернутся они в виде коллекции моделей (если вас смущает нестандартное для PHP слово коллекция - считайте, что это "массивы на стероидах").
Виртуальный выделенный сервер (VDS) становится отличным выбором
Можно ли как-то сделать чтобы при отсутствии элементов в списке ничего не выводилось совсем? Да, знаю там есть свойство emptyText, но даже с ним...