Yii Framework Forum: реляционная ActiveRecord - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

реляционная ActiveRecord Rate Topic: -----

#1 User is offline   sergey.leonenko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 62
  • Joined: 26-March 09

Posted 11 May 2009 - 04:33 AM

Интересует  такой  вопрос,  как  работать  с  формами  редактирования если  связь будет один  ко многим и  можно ли  и  как  сохранять изменения  в связанных  таблицах . причем  сразу по нескольким  строкам.
Если  можно примеры  кода.
Спасибо.
0

#2 User is offline   ORey 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 1,688
  • Joined: 20-April 09
  • Location:Moscow, Russia

Posted 11 May 2009 - 03:34 PM

Ну я напрмиер не фанат всякой "магии" при сохранении (как, например, сейчас в CakePHP сделано - все сохраняется в один вызов saveAll), поэтому предпочитаю по старинке ручками.
А именно,
if ($mymodel->save()) { 
    # если сохранилось - то имеем id родительской записи в $mymodel->id
    foreach (...) {
      # в цикле сохраняем связанные модели
      $record->parent_id = $mymodel->id;
      $record->save();
    }
}


Еще люблю использовать uuid, в этом случае можно сохранить дочерние записи ДО сохранения родительской ))
0

#3 User is offline   sergey.leonenko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 62
  • Joined: 26-March 09

Posted 11 May 2009 - 09:11 PM

Quote

Ну я напрмиер не фанат всякой "магии" при сохранении (как, например, сейчас в CakePHP сделано - все сохраняется в один вызов saveAll), поэтому предпочитаю по старинке ручками.

А именно,

if ($mymodel->save()) { 
    # если сохранилось - то имеем id родительской записи в $mymodel->id
    foreach (...) {
      # в цикле сохраняем связанные модели
      $record->parent_id = $mymodel->id;
      $record->save();
    }
}




Еще люблю использовать uuid, в этом случае можно сохранить дочерние записи ДО сохранения родительской ))

делая  подобным  образом,  а  что такое  uuid ?
0

#4 User is offline   ORey 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 1,688
  • Joined: 20-April 09
  • Location:Moscow, Russia

Posted 12 May 2009 - 01:20 AM

Ну, вообще говоря, если уметь генерить в известной степени уникальный идентификатор, то его можно использовать в качестве первичного ключа (вместо autoincrement).

Другое дело - как его генерить (по сути - какой процент коллизий дает тот или иной алгоритм). Где-то в General discussion есть ветка с обсуждением.

Я пользуюсь 32-байтным ключом, алгоритм честно притырил из CakePhp.
При этом модели я наследую от промежуточного класса, где в beforeSave сидит автогенерация ключа в случае его отсутствия (хотим - руками его задаем в контроллере, когда надо, а хотим - не заполняем, сам заполнится).
0

#5 User is offline   sergey.leonenko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 62
  • Joined: 26-March 09

Posted 12 May 2009 - 06:55 AM

Quote

Ну, вообще говоря, если уметь генерить в известной степени уникальный идентификатор, то его можно использовать в качестве первичного ключа (вместо autoincrement).



Другое дело - как его генерить (по сути - какой процент коллизий дает тот или иной алгоритм). Где-то в General discussion есть ветка с обсуждением.



Я пользуюсь 32-байтным ключом, алгоритм честно притырил из CakePhp.

При этом модели я наследую от промежуточного класса, где в beforeSave сидит автогенерация ключа в случае его отсутствия (хотим - руками его задаем в контроллере, когда надо, а хотим - не заполняем, сам заполнится).

Интересный  подход  с 32-байтным  ключом .  обычно генерю самой  базой  первичный  ключ.
Интересно все  таки  если  есть  пару  таблиц  и  если  мы  к  ним  обращаемся  с  помощью модели реляционной AR  можно править связанные таблицы  так  просто как  и в случае  доступа к  данным с  помощью AR
Ответьте  кто  знает  и  огромная  просьба поделитесь  если  есть примерами.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users