【发布时间】:2021-06-24 11:11:37
【问题描述】:
我有以下文件:
- pid
- 名字
- emp_id
这是我的控制器:
$data = $request->request->get('search');
$result = $this->getDoctrine()->getRepository(MemberRecords::class)->getMember($data);
树枝形态:
<form action="/admin/search", method="POST">
<div class="form-row">
<div class="form-group col">
<input class="form-control rounded-0" placeholder="emp id, pin or firstname to search record" name="search">
</div>
<div class="form-group col">
<button class="btn btn-success rounded-0">Search</button>
</div>
</div>
</form>
存储库:
public function getMember($data){
return $this->createQueryBuilder('c')
->where('c.pid = :value or c.firstname LIKE :value or c.emp_id= :value')
// ->orWhere('c.firstname LIKE :value')
// ->orWhere('c.emp_id= :value')
->setParameter('value', $data)
->orderBy('c.id','ASC')
->getQuery()
->getResult()
;
}
让我在这里写下我想要实现的目标:
在搜索输入中,用户可以使用三个属性搜索成员详细信息; emp_id 或名字 orpid 任一属性必须在 MySql 表中匹配并获取数据。
从上面的存储库:
如果我在搜索栏中输入 pid 或 emp_id,返回的结果是完美的,但如果我输入名字,所有记录都会被提取。
where('c.pid = :value or c.firstname LIKE :value or c.emp_id = :value')
现在如果我删除 c.emp_id= :value 则返回所有匹配的名字,
where('c.pid = :value or c.firstname LIKE :value')
但如果我再次将c.emp_id= :value 放回 pid 和 emp_id 将准确提取,但是当我输入名字 firstname 时,即使我在搜索栏中输入随机单词,也会再次提取所有记录。
如何根据搜索栏输入获取记录的会员详细信息?
如果我在某个地方缺乏逻辑,请纠正我..
【问题讨论】:
标签: symfony symfony-forms dql symfony5