Проблемы которые вы можете получить используя второй вариант описал
Михаил
Предложил бы реализовать второй вариант таким способом:
messages:
to | from | date | is_read
а в модельку добавить метод:
makeARead(): void;
в конструктор модельки можно передать id сообщения.
тогда если использовать ваш код то можно сделать так:
$message = new Message ($messageID)
$message->makeARead();
а создавать сообщение так:
$messages->addMessage(From, To);
если нужно сделать список сообщений прочитанными сделайте декоратор для $messages, например:
$messages = new MakedARead(
new Messages(
$conditionOfMessages
)
)
return $messages->list(); //Здесь в цикле делаем все сообщения прочитанными.
Плюсы такого подхода: можно добавлять функционал на лету, не изменяя старый код, а также можно соответствовать принципам SOLID
Можно, конечно как предложено в первом ответе, вполне себе будет работать, и тут нет ничего плохого.