ThinkPHP6 使用中一些需要注意的点

81 阅读1分钟

本文的目的在于记录一些在 Thinkphp 使用上遇到的一些问题,固成此文。

如果也能帮到路过的其他人,那就太好了。

1)在 get 列表查询方法时,参数类型需要都为字符串,而不是能是 int/bool 等类型

例如下面的例子,例如我们有一个 Demo 类内有一个状态字段 status。

当我们需要查询 status 的状态的时(实际上 status 在数据中也是 tinyint(1)), 如果用了 int 去标注 status 的类型的时候是无法查询到的。

use think\Model;

class Demo extends Model{
    $schema = [
     "status" => "intger",
      "create_at"=>"timestamp",
      "update_at"=>"timestamp"
    ]
}
public function index(int $status): Json {
    $query = Demo::page($current, $pageSize)
        ->order("create_at", "desc");
    if ($status != null) {
        $query->where("status", $status);
    }
    // 此时返回的参数将是空的
    return json($query->select());
}

所以在 get 查询的时候,无论数据库内的字段是什么类型都应该标注为 string 类型。

public function index(string $status): Json {
    $query = Demo::page($current, $pageSize)
        ->order("create_at", "desc");
    if ($status != null) {
        $query->where("status", $status);
    }
    return json($query->select());
}

只有这样,才可以正确查询的相关的数据列表