我在很长一段时间内都在与一个问题作斗争,但我找不到解决问题的好方法。
假设我有两张桌子:
uses (id, name)
uses_phone (id, user_id, phone)
假设我创建了一个users (1, 'Mary')
和她的手机users_phones (1, 1, '123') (2, 1, '333')
如果我想更新 Mary,将她的名字改为“Maria”:
该save()
方法不会删除 中的实际记录users_phone
,但会删除insert
新条目,然后我将拥有:
1, 1, 123
2, 1, 333
3, 1, 123
4, 1, 333
解决此问题的最佳方法是什么?我有点困惑。我喜欢使用 Model 而不是 PHQL(我也喜欢,但是带有 ORM 的 Model 似乎很神奇)。
编辑:添加代码
我更新了我的帖子以包含模型关系和我的控制器的简化版本
模型关系:
class Users {
...
$this->hasMany('xid', 'UsersTelephones', 'xid_user', ['alias' => 'UsersTelephones']);
...
}
class UsersTelephones {
...
$this->belongsTo('xid_user', '\Users', 'xid', ['alias' => 'Users']);
...
}
(非常简化)控制器代码:
function update($xid) {
...
$user = Users::findFirstByXid($xid);
// $user->email = "..";
$user_tfs = array();
for ($i=0;$i<count($tfs_array);$i++)
{
$user_tfs[$i] = new UsersTelephones();
$user_tfs[$i]->tf_number = $tfs_array[$i];
}
$user->UsersTelephones = $user_tfs;
// ...
$user->save()
}
感谢您的阅读,请原谅我糟糕的英语。