Пытаюсь сделать простой сайт с иcпользование паттерна ActiveRecord.
В паттерне ActiveRecord и ORM мы создаем класс и свойства, которые соответствуют таблица, получается одна таблица - один класс. Плюс в каждом классе по 4 метода - insert, delete, edit, update.
Когда мы достаем все записи из бд методом FETCH_CLASS мы ля каждой строки создаем объект нужного класса и добавляем этот объект в массив. Получается массив объектов.
Не совсем понимаю что из себя представляют объекты в в этом массиве? Что-то вроде ассоциативного массива, где имена переменных в классе это ключи, а значения переменных, значения этих ключей?
Отличаются от массивов тем, что к ним можно применить определенные методы? например update, найти объекте где id = 1 и присвоить переменным другие значения.
в каком то примере видел, что при методе insert проверяют, есть ли объект, где id уже установлен или вроде того. Зачем id проверять, если в БД у id тип SERIAL и при добавлении новой записи он будет уникален, а в самом sql запросе мы не прописывает id?
public function insert() {
// Есть у объекта статьи ID?
if ( !is_null( $this->id ) ) trigger_error ( "Article::insert(): Attempt to insert an Article object that already has its ID property set (to $this->id).", E_USER_ERROR );
// Вставляем статью
$conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$sql = "INSERT INTO articles ( publicationDate, title, summary, content ) VALUES ( FROM_UNIXTIME(:publicationDate), :title, :summary, :content )";
$st = $conn->prepare ( $sql );
$st->bindValue( ":publicationDate", $this->publicationDate, PDO::PARAM_INT );
$st->bindValue( ":title", $this->title, PDO::PARAM_STR );
$st->bindValue( ":summary", $this->summary, PDO::PARAM_STR );
$st->bindValue( ":content", $this->content, PDO::PARAM_STR );
$st->execute();
$this->id = $conn->lastInsertId();
$conn = null;
echo ' news addes';
}
P.S. есть ли хорошие материалы, примеры использования ActiveRecord и ORM ?