我的主要问题是如何通过名称搜索给定类别的id,让我解释一下,所以,在我的数据库中,我有一个名为product_category的表,其中存储了5个级别的类别。让我们举个例子:
<表类>
id
名称
parent_id
tbody><<tr>1 2B 1 3 C 2 4D 54 6B 5 7C 6 表类>
您可以使用递归查询来构建每个类别的完整路径,然后在最终的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)])