Одним INSERT`ом!

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Neofit
Сообщения: 3
Зарегистрирован: 2010.05.11, 15:46

Одним INSERT`ом!

Сообщение Neofit »

Всем привет!
Сорри, если вопрос глупый,новичок в yii!
Например, из формы получаю массив номеров телефонов!
Все их нужно записать в таблицу с помощью ActiveRecord!
Как сделать,чтобы не бежать по массиву и не вызывать каждый раз метод $model->save() для каждой записи, а вставить целиком все данные(телефоны) в таблицу??
Возможно ли такое?
Аватара пользователя
timlar
Сообщения: 1382
Зарегистрирован: 2009.09.19, 17:49
Откуда: Украина, Днепропетровск
Контактная информация:

Re: Одним INSERT`ом!

Сообщение timlar »

Twitter: @timlar_ua
Аватара пользователя
IceDragon
Сообщения: 50
Зарегистрирован: 2010.04.08, 20:02

Re: Одним INSERT`ом!

Сообщение IceDragon »

Аватара пользователя
timlar
Сообщения: 1382
Зарегистрирован: 2009.09.19, 17:49
Откуда: Украина, Днепропетровск
Контактная информация:

Re: Одним INSERT`ом!

Сообщение timlar »

IceDragon писал(а):я бы сказал
http://yiiframework.ru/doc/guide/ru/form.table
Человека интересует вариант без циклов :)
Twitter: @timlar_ua
Neofit
Сообщения: 3
Зарегистрирован: 2010.05.11, 15:46

Re: Одним INSERT`ом!

Сообщение Neofit »

Спасибо за ответы, ушел разбираться!!
Аватара пользователя
IceDragon
Сообщения: 50
Зарегистрирован: 2010.04.08, 20:02

Re: Одним INSERT`ом!

Сообщение IceDragon »

и так и так циклы.

по ссылке таблицы + форма - сохранение идет без цикла, в цикле только валидация.
Аватара пользователя
timlar
Сообщения: 1382
Зарегистрирован: 2009.09.19, 17:49
Откуда: Украина, Днепропетровск
Контактная информация:

Re: Одним INSERT`ом!

Сообщение timlar »

IceDragon писал(а):по ссылке таблицы + форма - сохранение идет без цикла, в цикле только валидация.
А как ты сохранять после валидации собрался? Не циклами, случайно? :lol:
Twitter: @timlar_ua
Аватара пользователя
Aver
Сообщения: 66
Зарегистрирован: 2010.04.22, 02:44

Re: Одним INSERT`ом!

Сообщение Aver »

А по моему вопрос не корректен. Что именно требуется ?
1 - Создать столько новых записей в таблице сколько получено номеров телефонов ?
2 - Или сохранить все полученные телефоны в 1-ой новой записи ?
Если 1 - то пододут оба предложенных варианта. И в том и в другом случае идет цикл обращений к бд, просто на ссылке Timlar чикл записи идет внутри экземпляра класса CActiverecord. Я конечно точно не уверен, слишком до фига ньюансов что бы все знать, но по моему сама Mysql не может создавать несколько записей из 1 запроса.
Если вариант 2, то слить циклом foreach массив в 1 переменную и ее отправить на запись.
Аватара пользователя
timlar
Сообщения: 1382
Зарегистрирован: 2009.09.19, 17:49
Откуда: Украина, Днепропетровск
Контактная информация:

Re: Одним INSERT`ом!

Сообщение timlar »

Aver писал(а):Я конечно точно не уверен, слишком до фига ньюансов что бы все знать, но по моему сама Mysql не может создавать несколько записей из 1 запроса.

Код: Выделить всё

INSERT INTO `users` (`name` , `age` , `country` , `city`) VALUES
('Евгений', 26, 'Россия', 'Москва'),
('Вадим', 31, 'Россия', 'Рязань'),
('Артур', 22, 'Россия', 'Санкт-Петербург'); 
Без проблем, абсолютно :)
Twitter: @timlar_ua
Аватара пользователя
Aver
Сообщения: 66
Зарегистрирован: 2010.04.22, 02:44

Re: Одним INSERT`ом!

Сообщение Aver »

Ан нет. Порылся в документации mysql, можно в запрос вынести создание нескольких записей. Но вот осуществимо ли это через CActiverocord сказать не могу.
Опередели меня на минуту.
Однако в вашем варианте, Timlar это не осуществлено. Там просто в классе идет перебор обращений к методу save.
Neofit
Сообщения: 3
Зарегистрирован: 2010.05.11, 15:46

Re: Одним INSERT`ом!

Сообщение Neofit »

Timlar писал(а):
Aver писал(а):Я конечно точно не уверен, слишком до фига ньюансов что бы все знать, но по моему сама Mysql не может создавать несколько записей из 1 запроса.

Код: Выделить всё

INSERT INTO `users` (`name` , `age` , `country` , `city`) VALUES
('Евгений', 26, 'Россия', 'Москва'),
('Вадим', 31, 'Россия', 'Рязань'),
('Артур', 22, 'Россия', 'Санкт-Петербург'); 
Без проблем, абсолютно :)
Вот как раз это мне и нужно, только средствами ActiveRecord, сейчас пытаюсь сделать как по ссылке, которую Вы дали, но пока не получилось, буду дальше разбираться!
oleg
Сообщения: 58
Зарегистрирован: 2010.04.20, 09:19
Откуда: Россия, Воронеж

Re: Одним INSERT`ом!

Сообщение oleg »

Так и не найдено было решение проблемы с помощью CActiveRecord? Хотелось бы вставлять массив данных в один запрос, а не инициировать новый запрос для каждого элемента массива (сейчас столкнулся с проблемой вставлять каждый раз по несколько десятков записей, если делать save() как в первой ссылке Timlar, то это будет слишком накладно).
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Одним INSERT`ом!

Сообщение samdark »

CActiveRecord не предназначен для таких задач. Используйте SQL или CDbCommandBuilder.
Ответить