Я думаю, что ваша проблема связана с использованием $ key в качестве ключа для массива $ userIDs, saveAll принимает неиндексированный массив для отношений hasMany в качестве параметров.
Более того, saveAll идеально подходит для сохранения двух связанных моделейв то же время.Вот кое-что, что должно работать:
function custom() {
if (!empty($this->data)) {
$this->loadModel('User');
$this->data['Message']['message_type_id'] = 2;
$userIDs = $this->User->listActiveUsers();
foreach ($userIDs as $value ) {
$this->data['SentMessage'][]['user_id'] = $value;
}
if ($this->Message->saveAll($this->data)) {
$this->Session->setFlash('Data saved', 'success');
} else {
$this->Session->setFlash('Data not saved', 'error');
}
}
}
Проверьте документ!http://book.cakephp.org/view/1031/Saving-Your-Data
Об использовании loadModel, я полагаю, что ваша модель SentMessage связана с User, поэтому вы можете использовать: $ this-> Message-> SentMessage-> User.Но нет ни малейшего представления о том, что является более эффективным.