按名称查找多级类别的id



我的主要问题是如何通过名称搜索给定类别的id,让我解释一下,所以,在我的数据库中,我有一个名为product_category的表,其中存储了5个级别的类别。让我们举个例子:

<表类> id 名称 parent_id tbody><<tr>12B13C24D546B57C6

您可以使用递归查询来构建每个类别的完整路径,然后在最终的select中对该完整路径进行筛选:

with recursive tree as (
select id, name, parent_id, name as full_path
from category 
where parent_id is null
union all
select c.id, c.name, c.parent_id, concat(p.full_path, '/', c.name) as full_path
from category  c
join tree p on p.id = c.parent_id
)
select id, name, parent_id
from tree
where full_path = 'A/B/C'

complete_name字段是一个存储计算字段,因此它可以用于搜索域。

示例(odoo 15):

self.env['product.category'].search([('complete_name', '=', 'A / B / C')])

示例(odoo 8):

self.env['product.category'].search([('name', '=', 'C'), ('parent_id.name', '=', 'B'), ('parent_id.parent_id.name', '=', 'A'), ('parent_id.parent_id.parent_id', '=', False)])

相关内容

  • 没有找到相关文章

最新更新