laravel - 如何使用 Laravel 和 Vue js 搜索数据?
问题描述
我想创建一个搜索栏,用户可以在其中搜索并按 3 列查找匹配的结果,即 job_title、company_name 和 country。
我能够使用计算属性通过其中一列创建搜索过滤器。
问题是它仅从 job_title 列返回匹配记录,而不是所有 3 列。有没有办法为此添加多个列?我尝试return jobPost.match(this.search);
而不是return jobPost.job_title.match(this.search);
获取整个表格,但这只是返回了一个错误。
data() {
return {
jobPosts: [],
search: ''
};
},
computed: {
filteredJobs: function() {
return this.jobPosts.filter((jobPost) => {
return jobPost.job_title.match(this.search);
})
}
}
CandidateSearchController.php 文件:
public function search(Request $request)
{
$search = $request->get('q');
$jobPosts = JobPost::with('employerprofile')
->where('job_title', 'like', '%'.$search.'%')
->get();
return Response::json(array(
'jobPosts' => $jobPosts,
), 200);
}
搜索输入和按钮:
<input type="text" v-model="search" placeholder="Search job titles.."/>
<button class="btn btn-primary" style="padding: 7px 10px; margin-top: -1px;">
<i class="fas fa-search"></i>
</button>
解决方案
由于您只有一个输入,您可以在 sql 查询本身中使用 OR 将给定的字符串与职位、公司和国家/地区相匹配
public function search(Request $request)
{
$search = $request->get('q');
$jobPosts = JobPost::with('employerprofile')
->where('job_title', 'like', '%'.$search.'%')
->where(function($q) {
$q->where('job_title', 'like', '%'.$search.'%')
->orWhere('company_name', 'like', '%'.$search.'%');
->orWhere('country', 'like', '%'.$search.'%');
})
->get();
return Response::json(array(
'jobPosts' => $jobPosts,
), 200);
}
推荐阅读
- networking - 如果您在浏览器上打开网站然后连接到 vpn,这些网站会发送到 vpn 提供商吗?
- php - 将 PHP 数组结果打印到 HTML 可选列表中
- excel - EXACT 函数在数组公式中返回“#N/A”错误?
- c# - 使用 costura 嵌入报表查看器 dll 时出错
- python - JSON 模式验证失败 - 错误不是“对象”类型
- android - 在 Windows 上的 Android 虚拟设备中运行 React Native 应用程序
- python - 熊猫,在字符串列表和df列值(作为列表)之间找到匹配(任何)以创建新列?
- python-3.x - 使用 pip 安装 mysqlclient 时如何解决此问题
- swift - 替换 NSTextStorage 中的 NSAttributedString 移动 NSTextView 光标
- javascript - 模式属性仅在页面重置后传递