使用thinkphp5.0查询menu表中的树形结构,其中pid是父级id
时间: 2023-01-31 14:54:57 浏览: 53
使用 ThinkPHP 5.0 查询 menu 表中的树形结构,你可以使用以下方法:
1. 使用 `collection` 方法将查询结果转换为集合,然后使用 `tree` 方法将集合构建成树形结构:
```
$list = Db::name('menu')->field('id,pid,name')->select();
$tree = collection($list)->toArray();
$tree = \think\helper\Arr::tree($tree, 'name', 'id', 'pid');
```
2. 使用 `tree` 方法直接从数据库中查询并构建树形结构:
```
$tree = Db::name('menu')->field('id,pid,name')->order('sort asc')->select()->toArray();
$tree = \think\helper\Arr::tree($tree, 'name', 'id', 'pid');
```
在上面的代码中,第二个参数 `'name'` 是指定作为节点名称的字段,第三个参数 `'id'` 是指定作为节点唯一标识的字段,第四个参数 `'pid'` 是指定作为父级 ID 的字段。
注意:需要先在项目中引入 `think\Db` 和 `think\helper\Arr` 类。
相关问题
使用thinkphp5.0 查询数据库id不等于3的语句
请使用以下代码:
```php
use think\Db;
$result = Db::name('table_name')
->where('id', '<>', 3)
->select();
```
其中,`table_name` 是要查询的数据表的名称,`id` 是数据表中的主键,`< >` 表示不等于,`3` 是要排除的数据的主键值。`select()` 方法用于执行查询操作,并返回查询的结果集。
thinkphp5.0中mysql查询in怎么用
在 ThinkPHP 5.0 中,使用 Query 方法进行 MySQL 查询时,可以使用 whereIn() 方法来查询符合某个字段在给定值列表中的记录。
例如,假设有一个 user 表,其中包含了 id、name 和 age 三个字段,要查询 age 在 20、25、30 这三个值中的用户,可以这样写:
```php
use think\Db;
$result = Db::name('user')
->whereIn('age', [20, 25, 30])
->select();
```
这样就会返回一个二维数组 $result,其中包含了所有符合条件的用户记录,每个记录包含 id、name 和 age 三个字段的值。
如果要查询 age 不在给定值列表中的记录,可以使用 whereNotIn() 方法,例如:
```php
$result = Db::name('user')
->whereNotIn('age', [20, 25, 30])
->select();
```
这样就会返回一个二维数组 $result,其中包含了所有不符合条件的用户记录。