У меня проблема с проектированием моей базы данных и кода CakePHP вокруг нее.
У меня есть 4 модели,
- ServerName
- VirtualMachine
- ServerHousing
- ManagedServer
В ServerName я хочу сохранить все ServerNames, которые затем можно использовать в любой из трех других моделей.Как я могу добиться того, чтобы я мог связать только одно имя_сервера с одной из других моделей?
Заранее спасибо, ребята.
РЕДАКТИРОВАТЬ:
Я сейчас сделалэто немного по-другому.Прежде всего это нужно сделать в самой модели.Я использовал опцию проверки в моделях CakePHP.
Код выглядит так:
public $validate = array(
'server_name_id' => array(
'rule' => 'serverNameTaken',
'message' => 'This Servername has already been taken.'
)
);
public function serverNameTaken()
{
$this->ManagedServer = ClassRegistry::init("ManagedServer");
// Assuming the server_name_id was passed from the form...
$server_name_id = $this->data['VirtualMachine']['server_name_id'];
// Check if this servername_id is already saved in virtual_machines
if ($this->ManagedServer->find('count', array(
'conditions' => array(
'ManagedServer.server_name_id' => $server_name_id
)
)) > 0
) {
// Found the server_name in the VirtualMachine model!
return false; // Prohibit saving the data
}
if ($this->find('count', array(
'conditions' => array(
'VirtualMachine.server_name_id' => $server_name_id
)
)) > 0
) {
// Found the server_name in the VirtualMachine model!
return false; // Prohibit saving the data
}
// Do this for the other models too. If a return false is not hit by now,
// everything should be fine and you can...
return true;
}
Тот же код, который я использовал в других моделях, только код должен был быть изменен.
Еще раз спасибо за ваш ответ !!!