【发布时间】:2018-01-31 10:54:24
【问题描述】:
CakePHP 3.5.5 版
我有什么:
我的索引页面上有搜索功能,允许用户按列和值进行搜索。用户从选择列表中选择列并将文本添加到输入中。我使用以下方法获取这些数据:
$query = $Users->find()
->where(function ($exp, $q) {
return $exp->like($this->request->getData('column'), $this->request->getData('input') . '%');
})
->andWhere([
'status' => $filter,
'cid_1' => $c1
]);
当使用 debugKit 时,它显示的 sql 为:(仅提取帮助解释)
FROM users Users WHERE (role LIKE :c0 AND status = :c1 AND cid_1 = :c2)',
我想做的是以下几点:
$testColumn = $this->request->getData('column');
$testInput = $this->request->getData('input');
$query = $Users->find()
->where(function ($exp, $q) {
return $exp->like($testColumn, $testInput . '%');
})
->andWhere([
'status' => $filter,
'cid_1' => $c1
]);
$testColumn 变量未定义。
当使用 debugKit 时,它显示的 sql 为:(仅提取帮助解释)
FROM users Users WHERE (LIKE :c0 AND status = :c1 AND cid_1 = :c2)',
IE:角色没有在 LIKE 之前声明。
我的尝试:
1. return $exp->like("$testColumn", "$testInput" . '%');
结果:完全一样 - 变量仍未定义。
DebugKit: FROM users Users WHERE (LIKE :c0 AND status = :c1 AND cid_1 = :c2)',
2. return $exp->like("'$testColumn'", "'$testInput'" . '%');
结果:它在 LIKE 之前添加了 '',如下所示,但我仍然无法定义该变量。
DebugKit: FROM users Users WHERE ('' LIKE :c0 AND status = :c1 AND cid_1 = :c2)',
我的问题:
有没有办法使用动态值来选择搜索数据。
更新:
是不是我无法在这种情况下将 getData 分配给变量。
你不能这样做:
$testColumn = $this->request->getData('column');
return $exp->like($testColumn, $testInput . '%');
但你可以这样做:
$testColumn = $this->request->getData('column');
echo 'testColumn is ' . $testColumn . '<br />';
if ($testColumn === 'role') {
echo 'in column passed ' . '<br />';
}
else {
echo 'in column failed ' . '<br />';
}
谢谢。 Z.
/////////////////////////////////////// /////////////////////////////
根据要求提供 Alimon Karim。
我正在使用帖子,我的网址是:https://localhost/app/users/search
感谢 Alimon,它有效。
【问题讨论】:
-
你是用get方法还是post方法发送数据?点击搜索按钮后,您的网址是什么?