refactor: 产品分类添加path层级路径逻辑
This commit is contained in:
@@ -66,20 +66,13 @@ class ProductCategoryValidate extends Validate
|
||||
if ($value == 0) {
|
||||
return true;
|
||||
}
|
||||
$table_name = (new ProductCategoryModel)->getTable();
|
||||
$children = Db::query(
|
||||
preg_replace(
|
||||
'/\s+/u',
|
||||
' ',
|
||||
"WITH RECURSIVE tree_by AS (
|
||||
SELECT a.id, a.pid FROM $table_name a WHERE a.id = {$data['id']}
|
||||
UNION ALL
|
||||
SELECT k.id, k.pid FROM $table_name k INNER JOIN tree_by t ON t.id = k.pid
|
||||
)
|
||||
SELECT id FROM tree_by WHERE id <> {$data['id']};"
|
||||
)
|
||||
);
|
||||
if (!empty($children) && in_array($data['pid'], array_column($children, 'id'))) {
|
||||
// 如果pid和id相同,返回false
|
||||
if ($value == $data['id']) {
|
||||
return false;
|
||||
}
|
||||
// 如果pid是id的子分类,返回false
|
||||
$children = ProductCategoryModel::whereRaw('FIND_IN_SET(:id, path)', ['id' => $data['id']])->column('id');
|
||||
if (!empty($children) && in_array($value, $children)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user