знаешь может другую реализацию или как это решить?
Можно конечно еще через отдельную таблицу OneToOne решить. Но мне кажется и при твоей схеме должно решаться. Что то ты упускаешь.
Ща все решим. Я как раз выпил литрушечку пива, а значит настало время принимать здравые решения😃
может я просто orm свою плохо знаю, у меня даже близко нету представления о том где я ошибся
1. есть модели конференции и сообщений. -> понятно 2. Нужно сделать так, чтобы у конференции было поле, которое ссылается на айди последнего сообщения этой конференции -> если нужно - сделайте. Добавьте поле lastMessageId в Conversation 3. На сколько я понял, при связи A.hasOne(B), сущность B не может существовать без указаного айдишника в A, но как тогда это реализовать правильно? -> это вопрос не к БД, а к конкретному ORM и его ограничениям. 4. У меня сначало создаётся по сути конференция с поле lastMessage_id: null. -> ОК 5. Затем создаётся message и по идеи должна искаться конференция и вписываться айди в поле lastMessage_id равное айдишнику нового сообщения -> у вас у mesage должно быть поле conversationId, указывающее на объект Conversation, к которому относится Message. 6. Но сообщение даже не создаётся, из за того что айди в lastMessage_id не указан -> вот в этой фразе проблема. Сообщение должно создаваться в любом случае. У вас у сообщения есть conversationId, указывающее на идентификатор Conversation, который вы получаете, когда создаёте объект Conversation. Когда сохраняете объек Message, получаете message_id и обновляете объект Conversation по id, который = conversationId сохраненному в Message
Короче полистал я по быстрому про твою орм, походу ты в ассоциациях напутал какая модель от какой зависит.
это вряд ли, я сделал всё идеально, я уже решил сам своё проблему
в модели конференции unique убрал, а в связях добавил constraints: false, которое убирает ограничения
Не самое удачное решение ))
Руками следить придется. На уровне приложения.
я только в 1 месте это использовал, где даже схема несложная, не думаю, что это плохо, когда я 2 дня потратил, чтобы реализовать это
Обсуждают сегодня