Intereting Posts
Лучшая оценка для обработки полей форм PDF с помощью PHP5 Вывод хеширования hmac PHP и Java соответствует шестнадцатеричному, не соответствует в двоичном формате. Что происходит? Динамические имена таблиц в Yii2 копирование на временную таблицу занимает много времени Корпус выключателя с тремя параметрами? Извлечение внутренней информации EXE Создание 300 экземпляров blockui Случайные ссылки PHP без повторения Youtube-подобные идентификаторы, которые соответственно изменяются с помощью идентификатора Как включить драйвер PDO для sqlite3 в php? Каков наилучший способ случайной 1000 строк (не повторяющейся строки) из mysql? Простой скрипт pagination PHP Распаковка обновления … Не удалось создать каталог. WordPress Как отображать преобразованные часовые пояса в «общую неделю» (с воскресенья по субботу)? Мой PHP не может создать истинное цветное изображение

Добавить элементы в отношение Phalcon Many-to-Many

У меня есть две модели во многих отношениях. Давайте используем в качестве примера лекторов и студентов.

class Lecturer { public function initialize() { $this->hasMany('studentId', 'Model\Entity\LecturerStudent', 'studentId', ['alias' => 'LecturerStudent']); $this->hasManyToMany( 'lecturerId', 'Model\Entity\LecturerStudent', 'lecturerId', 'studentId', 'Model\Entity\Student', 'studentId', ['alias' => 'Students'] ); } } class LecturerStudent { public function initialize() { $this->belongsTo('studentId', 'Model\Entity\Student', 'studentId', ['alias' => 'Student']); $this->belongsTo('lecturerId', 'Model\Entity\Lecturer', 'lecturerId', ['alias' => 'Lecturer']); } } class Student { public function initialize() { $this->hasMany('lecturerId', 'Model\Entity\LecturerStudent', 'lecturerId', ['alias' => 'LecturerStudent']); } } 

Теперь, когда я хочу добавить студентов к лекторам, мне нужно всего лишь:

 $lecturerA = new Lecturer(); $studentA = new Student(); $studentB = new Student(); $lecturerA->Students = [$studentA, $studentB]; $lecturerA->save(); 

Все это работает так, как я ожидал.

Проблема возникает в моем приложении, когда я импортирую несколько записей в одну транзакцию, и мне нужно добавить второй массив к этой связи.

Итак, в примере:

 $lecturerA = new Lecturer(); $studentA = new Student(); $studentB = new Student(); $lecturerA->Students = [$studentA, $studentB]; ... other code doing other things ... $studentC = new Student(); $studentD = new Student(); $lecturerA->Students = [$studentC, $studentD]; ... more code ... $lecturerA->save(); 

В этом случае сохраняются только элементы, добавленные во второе присвоение Students . Предмет (ы) из первого присвоения теряются. Поэтому в моем примере в studentC studentD будут записываться только studentC и studentD .

Есть ли правильный способ сделать это – добавить к предыдущему массиву «многие ко многим» – в Phalcon? У меня есть альтернативный (messier) способ сделать это в классе, который выполняет импорт, но если есть правильный способ, я бы предпочел использовать это.