symfony - 使用 DQL 从 Symfony 中的 3 个字段中获取数据
问题描述
我有以下文件:
- 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 或 firstname 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 时,即使我在搜索栏中输入随机单词,也会再次提取所有记录。
如何根据搜索栏输入获取记录的会员详细信息?
如果我在某个地方缺乏逻辑,请纠正我..
解决方案
默认情况下,Doctrine 不允许部分对象。这意味着,任何只选择部分对象数据并希望将结果作为对象检索的查询(即 Query#getResult())都会引发异常,告诉您部分对象是危险的。如果您想强制查询返回部分对象,可能作为性能调整,您可以使用 partial 关键字,如下所示:
<?php
$q = $em->createQuery("select partial u.{id,name} from MyApp\Domain\User u");
见:https ://www.doctrine-project.org/projects/doctrine-orm/en/2.9/reference/partial-objects.html
推荐阅读
- sql - 在连接两个表期间获取最大总和
- ios - Apple SSD 的 Used Memory 在运行 Xcode 项目时不断增加
- ios - 为什么设置 UIBarButtonItem 的 primaryAction 属性会更改其图像?
- php - 无法在 php 联系表单代码中显示错误或成功消息
- python - 打开 Cv 将珠宝图像添加到捕获的面部问题
- angular - 我的 angular11 http PUT 方法有问题。除 PUT 外,所有其他都以角度工作。他们都在 Postman 工作
- google-app-engine - 部署到亚洲地区时如何防止 App Engine 构建超时
- entity-framework - 实体框架 - 添加具有相关实体的实体时出错
- python - 您如何修复“缺少模块 docstringpylint(缺少模块文档字符串)”
- javascript - 反应上下文 api 中的问题