Я пытаюсь сохранить модель домена в БД без использования ORM просто для удовольствия.
Сохранять свойства довольно легко, но мне трудно сохранять коллекцию.
Допустим, у меня есть следующие два объекта.
class aModel
{
private $items = [];
public function __construct($id, $name, array $items = [])
{
$this->id = $id;
$this->name = $name;
$this->items = $items;
}
public function getId()
{
return $this->id;
}
public function getName()
{
return $this->name;
}
public function addItem(Item $item)
{
$this->items[] = $item;
}
}
class aDBRepository
{
public function persist(aModel $aModel)
{
$attributes = [
'id' => $aModel->getId(),
'name' => $aModel->getName()
];
$this->table->insert($attributes);
}
}
// Код
$aModel = new aModel("test id", "a name");
$aModel->addItem(new Item("id", "name"));
Когда я создаю новый модель и добавить новый элемент к нему, как я могу обнаружить «несохраненные» элементы и сохранить их?
Я могу только думать о добавлении isSaved метод в Вещь класс и цикл $ пункты переменная в модели.
Не используя рефлексию, как лучше?
Задача ещё не решена.
Других решений пока нет …