save здесь не катит, потому, что мне еще нечего сохранять, наоборот, нужно либо создать новую запись и начать с ней работать,
либо прочитать уже существующую и присвоить ее значения полям создаваемого объекта,
save я делаю в конце, после всех изменений.
Проблема в том, что конструктор в любом случае создает запись в базе, даже когда это и не нужно.
Вот так примерно:
Код: Выделить всё
/* проверяю, известен ли идентификатор записи */
if(!is_set($id)) { // id неизвестен:
$rec = new MyClass(); // здесь создается экземпляр класса и новая запись, это случай, когда мне неизвестен id записи
} else { /* а вот здесь мне нужно создать экземпляр класса, но так, чтобы он _не_создавал_ (!!!) запись в базе,
эта запись _уже_существует_и_ее_id_записи_мне_известен,
нужно _только_ прочитать значения ее полей, присвоить объекту и работать с ним дальше */
}
/* здесь работаю с объектом, изменяю его значения итп */
$rec->field1 = $var1; // etc
/* сохраняю изменения */
$rec->save();
Мне нужно иметь возможность выбирать,
создавать ли новую запись при вызове конструктора, или
работать с существующей, когда известен ее идентификатор в базе.
Можно, в принципе, тупо вызвать конструктор, удалить создавшуюся запись, прочитать данные из нужной мне записи и присвоить их полям созданного объекта,
но это костыль. Можно как-нибудь без создания записи, если она уже есть и у меня есть ее ID?
Когда я распечатываю print_r'ом созданные объект, там есть такое поле:
Может, можно здесь как-то изменить поведение конструктора?