Все разделять, если проект будет расти и меняться.
сущности человека и компании обрастут специфичными полями.
контакты человека и компании обрастут специфичными полями.
Плюс получите большие потери времени, чтоб закодить эту универсальность
SELECT * FROM items
WHERE
EXISTS (
SELECT item_flags.item_id
FROM item_flags
WHERE (item_flags.flag_name= '1' AND item_flags.flag_value = '1' AND item_flags.flag_name= '2' AND item_flags.flag_value = '2' AND item_flags.item_id = items.id))
Выражение # 1 предложения ORDER BY не находится в предложении GROUP BY и содержит неагрегированный столбец «rows.data», который функционально не зависит от столбцов в предложении GROUP BY; это несовместимо с sql_mode = only_full_group_by
sql_mode = only_full_group_by отрубить
либо
rows.data добавить в группбай
Вы бы реально хотяб погуглили, это быстрее чем сюда вопрос писать ведь.
$contact->phoneNums()->delete();
foreach(...){
//добавляем из массива
}
Ну а если делать граммотно.
То собираете из инпута существующие айдишники
Делаете поиск по номерам notIn айдишники из инпута
Удаляете их
добавляете те которые остались.
фриланс начального уровня переполнен просто ппц как.
90% фрилансеров новички. Все зависит не от ваших навыков, а от умения договариваться и продавать свои услуги.
А в yii нет сеттеров гетеров для атрибутов или мутаторов?
Вобще оптимально преобразовывать в Carbon при получении и парсить Карботом при установке атрибута и готовить для сервера.
Эта логика Кошерна и очень верна(но желательно сетерами и гетерами)
Вы в 1 месте данные готовите для получения и установки.
Потому, что очереди немножко не для этого сделаны.
Вам надо крон задачку.
Очереди нужны для того, чтоб тяжелые операции в фон выносить.
Типо генерации отчета, отправки имейла сразу и т.п. Чтоб не задерживать скрипт.
Если очереди хотите, можно извратиться.
Сделать крон задачу, которая будет раз в 10 минут проверять события и добавлять имейлы в очередь на ближайшее время :)