У меня есть ситуация, когда по внешним причинам мне приходится напрямую сохранять записи объединений, а не сохранять их как часть соединения. Вот что я имею в виду:Почему saveAll() сохраняет только последнюю запись?
- У меня есть модель
Firm
, данные которой вытягиваются из внешнего источника. - У меня есть
County
модели в моем приложении базе данных - У меня есть
counties_firms
присоединиться к таблице, которую я использую, чтобы связать эти внешние фирмы графств.
Из-за того, что там живет, я не редактирую модель Firm
и не редактирую модель County
. Я просто редактирую ассоциации. У меня есть модель Firm
, чтобы инкапсулировать все, что мне нужно делать с данными фирмы, и один из этих методов - Firm::saveCounties($data)
. Он:
- Принимает входящие данные, содержащие идентификатор фирмы и идентификаторы округа, которые должны быть связаны.
- Удаляет все существующие записи объединений для этого округа
- Попытки сохранить все новые записи объединений.
Что я нахожу, так это сохранение только последней записи округа. Вот входящие данные:
Array
(
[0] => Array
(
[firm_id] => 13
[county_id] => 4fa16e24-a25c-4523-8a9e-7d1d147402e8
)
[1] => Array
(
[firm_id] => 13
[county_id] => 4fa16e27-ccd0-4f22-97da-7d1d147402e8
)
[2] => Array
(
[firm_id] => 13
[county_id] => 4fa16e4a-68f8-4fb1-95bb-7d1d147402e8
)
)
Учитывая, что данные, я создаю на лету ассоциацию между Firm
и CountiesFirm
и пытается $this->CountiesFirm->saveAll($data)
.
Как я уже упоминал, только последнее из 3 ассоциаций графств в этом примере получает спасение. Любая идея, что я могу пропустить?
Спасибо.
Большое спасибо Стефану! Я просто делал простое спасение, не нуждаясь в том, чтобы быть таким эффективным, но мог только получить последнюю запись в базе данных. Установка id в NULL делает его идеальным. –