我有模型人与电话/电子邮件与HABTM关系。经过一番痛苦后,我发现,当我打破HABTM成为时,我的生活变得更加轻松:人有许多人电话,电话有许多人电话,人电话归属于(人,电话)。那么,我现在不需要任何帮助:-)现在,我的问题是不同的:CakePHP透明保存唯一数据
在我可以将人员与他的电话或电子邮件配对之前,我需要保存此电话/电子邮件,然后获取其ID。
现在我想只保存独特的电话和电子邮件独特,所以我在app_model.php创造了这个方法:
function saveUnique($data = null, $unique_fieldname = null)
{
if (! $data) { return false; }
if (! $unique_fieldname) { return false; }
$id = $this->field('id', array($unique_fieldname => $data[$this->name][$unique_fieldname]));
if ($id)
{
$this->read(null, $id);
}
else
{
$this->create();
$this->set($data);
if (! $this->validates()) { return false; }
if (! $this->save()) { return false; }
}
return true;
}
看来工作,但我所有新来的CakePHP。 CakePHP guru如何解决这个功能/方法?
非常感谢您的时间。
-Petr
那么,“与”的东西对我来说是新的。我会试试看,谢谢。我不记得我在与本地HABTM功能打交道时遇到的所有问题,但是,例如,如果我只想向一个人添加一个电话号码,该怎么办?有没有办法做到这一点?它始终删除people_phones表中以前保存的所有关系。 – 2011-06-06 12:34:30
HABTM关系中的“唯一”属性可防止模型覆盖以前的记录,因此如果将唯一设置为false,则它将更像常规模型。 – 2011-06-06 12:45:46
在2.1中可以。谢谢。 – Eugen 2012-04-30 20:06:58