如何在 restful api codeigniter 4 中使用 where?
how to use where like in restful api codeigniter 4?
我正在制作一个使用 codeigniter 4 连接到 restful api 服务器的 reactjs。我只想显示字段 username
和 [=14] 的数据=] 包含查询字符串 q
我的代码大致是这样的:
<?php
namespace App\Controllers;
use CodeIgniter\RESTful\ResourceController;
use CodeIgniter\API\ResponseTrait;
use App\Models\UserModel;
class Users extends ResourceController
{
use ResponseTrait;
public function index()
{
$model = new UserModel();
$data = [];
// example uri: http://localhost:8080/users?q=asd
$qs = $_SERVER['QUERY_STRING'];
parse_str($_SERVER['QUERY_STRING'], $_GET);
$searchStr = empty($_GET['q']) ? '' : $_GET['q'];
if ($searchStr)
{
$data = $model->group_start()
->like('username', $searchStr)
->or_like('nama', $searchStr)
->group_end()
->findAll();
}
else
{
$data = $model->findAll();
}
return $this->respond($data);
}
}
当 React js 应用程序中的搜索框为空时,所有数据都会正确显示。但是当搜索框不为空时,$data
returns 为空数组。 . 是 group_start()
部分的问题吗?我该如何解决?
提前致谢
问题 是,您没有在 SQL 查询中使用任何通配符
这是一个link到SQL喜欢的操作
另外,我认为您不需要从 URL 解析 query string,只需键入 $_GET['q']
在这一行中你有一个错误:
$searchStr = empty($_GET['q']) ? '' : $_GET['q']);
当您的查询中有 q 时,空条件为真。
就这样吹吧:
$searchStr = $_GET['q'] ? $_GET['q'] : '' ;
样本:$myString = condition ? true : false ;
我是这样穿的:
注意图案线
public function index()
{
$model = new UserModel();
$data = [];
$searchStr = $_GET['q'] ? $_GET['q'] : '' ;
if ($searchStr)
{
$patern = '%'.$searchStr.'%'; // % char represent any char in before and after
$data = $model->group_start()
->like('username', $patern )
->or_like('nama', $patern )
->group_end()
->findAll();
}
else
{
$data = $model->findAll();
}
我正在制作一个使用 codeigniter 4 连接到 restful api 服务器的 reactjs。我只想显示字段 username
和 [=14] 的数据=] 包含查询字符串 q
我的代码大致是这样的:
<?php
namespace App\Controllers;
use CodeIgniter\RESTful\ResourceController;
use CodeIgniter\API\ResponseTrait;
use App\Models\UserModel;
class Users extends ResourceController
{
use ResponseTrait;
public function index()
{
$model = new UserModel();
$data = [];
// example uri: http://localhost:8080/users?q=asd
$qs = $_SERVER['QUERY_STRING'];
parse_str($_SERVER['QUERY_STRING'], $_GET);
$searchStr = empty($_GET['q']) ? '' : $_GET['q'];
if ($searchStr)
{
$data = $model->group_start()
->like('username', $searchStr)
->or_like('nama', $searchStr)
->group_end()
->findAll();
}
else
{
$data = $model->findAll();
}
return $this->respond($data);
}
}
当 React js 应用程序中的搜索框为空时,所有数据都会正确显示。但是当搜索框不为空时,$data
returns 为空数组。 . 是 group_start()
部分的问题吗?我该如何解决?
提前致谢
问题 是,您没有在 SQL 查询中使用任何通配符 这是一个link到SQL喜欢的操作
另外,我认为您不需要从 URL 解析 query string,只需键入 $_GET['q']
在这一行中你有一个错误:
$searchStr = empty($_GET['q']) ? '' : $_GET['q']);
当您的查询中有 q 时,空条件为真。 就这样吹吧:
$searchStr = $_GET['q'] ? $_GET['q'] : '' ;
样本:$myString = condition ? true : false ;
我是这样穿的: 注意图案线
public function index()
{
$model = new UserModel();
$data = [];
$searchStr = $_GET['q'] ? $_GET['q'] : '' ;
if ($searchStr)
{
$patern = '%'.$searchStr.'%'; // % char represent any char in before and after
$data = $model->group_start()
->like('username', $patern )
->or_like('nama', $patern )
->group_end()
->findAll();
}
else
{
$data = $model->findAll();
}