我已经编写了添加和更新用户的代码,并且还想添加和更新他们可以使用的类别。添加的用户将进入users表,而他们可以访问的类别进入category_permitted表。我有以下代码用于添加和更新表:
if ($user_info) {
if ($act == "add") {
if ($user_info) {
$array = array(
'user_id' => $user_info,
'category_id' => $temp['cat_access']
);
$category_permitted->addCategoryAccess($array);
}
} else {
if ($user_info) {
$array = array(
'user_id' => $id,
'category_id' => $temp['cat_access']
);
$deleteold = $category_permitted->deleteCategoryAccess($id);
$category_permitted->addCategoryAccess($array);
}
}
}
这是我添加和更新类别访问权限的功能:
public function addCategoryAccess($data, $is_die = false){
return $this->insert($data, $is_die);
}
public function updateCategoryAccess($data, $id, $is_die = false){
$args = array(
'where' => array('user_id' => $id),
);
return $this->update($data, $args, $is_die);
}
我的更新功能是在更新用户的类别访问权限时,使用要添加的数字来更新category_id列的所有数据。
我想保持2和3不变,并添加另一个类别ID 1,但是在运行更新代码后,它会像这样更新数据。我是否必须向{{1 }}以获得预期的输出?
答案 0 :(得分:0)
要仅更新一行,您需要该行的唯一标识符。
如果列ID是主键,则可以使用该列仅更新相应的行。
$args = array(
'where' => array('id' => $category_permitted_id),
);
或者,如果您知道哪个类别正在更改,并且关系(user_id,category_id)是唯一的,则可以将更改的类别添加到where。
$args = array(
'where' => array(
'user_id' => $user_id,
'category_id' => $category_id
),
);
请注意,我不知道您的数据库抽象层,这意味着您可以简单地在数组中添加另一个条目以将条件放入“ AND”,这可能是不正确。
以这种方式管理关系需要一些努力,我认为这是不值得的。 如果您能够修改应用程序逻辑,我建议您切换为仅使用插入/删除,如下所示:
添加允许的类别:只需添加它即可创建带有插入的新记录
删除允许的类别:通过删除功能将其删除
将允许的类别更改为另一类别:删除正在更改的类别并添加新的类别
答案 1 :(得分:0)
在我的代码中执行此操作对我有用。我在for循环之前调用了函数$deleteold = $category_permitted->deleteCategoryAccess($id);
,以避免删除每次迭代中删除的先前数据。
if ($user_info) {
$cat_access = (isset($_POST['cat_access']) && !empty($_POST['cat_access'])) ? ($_POST['cat_access']) : $_SESSION['cat_access'];
$value = array();
if (!empty( $cat_access ) && is_array( $cat_access ) ) {
foreach( $cat_access as $key => $item ) {
$value[] = filter_var( $item, FILTER_SANITIZE_NUMBER_INT );
}
}
$categoryData = $value;
$temp = array();
if ($categoryData) {
$count = count($categoryData);
if ($count > 0) {
$deleteold = $category_permitted->deleteCategoryAccess($id);
for($i=0; $i<$count; $i++){
$temp =array(
'cat_access' => $categoryData[$i]
);
if ($act == "add") {
if ($user_info) {
$array = array(
'user_id' => $user_info,
'category_id' => $temp['cat_access']
);
$category_permitted->addCategoryAccess($array);
}
} else {
if ($user_info) {
$array = array(
'user_id' => $id,
'category_id' => $temp['cat_access']
);
$category_permitted->addCategoryAccess($array);
}
}
}
}
}
}