landergate: я думаю 20 в день решат проблему, у Вас же не 5 человек на сайте кроме ботов. А если 5, то зачем такое поддерживать. Но я все равно считаю, что ваш путь - это авторизация через соц сети, иначе спам не побороть. А для пользователя это 1 клик, ну 2
galithr: Это велосипед. Стандартная реализация удобней и более гибкая. Как минимум вместо where стоит использовать filterWhere. Сгенерируйте через gii стандартный круд,там будет и search model и контроллер под это. И Возьмите от туда код.
Allanian: Самый простой способ на мой взгляд в моделе сделать публичную переменную $items потом добавить в метод aftersave перебор массива из нее и сохранения данных. Это более интересно чем link хотя бы потому, что link не валидирует данные.
Я думаю, что из коробки не сделали, так как много частных случаев, да и делается это крайне просто. Есть на gitlab куча решений, которые через поведение подключаются к модели и реализуют такую возможность.