laravel - 存储为 id 时搜索列名
问题描述
我有一个表,用户可以在其中搜索数据。他们输入一个搜索词,如果它与任何表数据匹配,则返回结果。
这是控制器。
$query = request('search-term');
if(!empty($query))
{
$user = OnlineCounsellingApplication::where('name', 'like', $query)
->orWhere('email', 'like', $query)
->orWhere('country_id', 'like', $query)
->paginate(25)
->setPath('');}
如果用户搜索电子邮件,则会显示该电子邮件记录。
我的问题是,如果用户搜索国家/地区,则不会返回任何结果,因为我将国家/地区存储为 id,这与另一个表上的名称相关。它存储为 country_id。记录最初是这样显示的
@foreach($users as $row)
<tr>
<td>{!! $row->id !!}</td>
<td>{!! $row->name ?: 'No Name Provided'!!}</td>
<td>{!! $row->email !!}</td>
<td>{!! $row->country['name'] ?: 'No Country Provided' !!}</td>
</tr>
@endforeach
如何接受字符串作为输入并根据 id 搜索它
解决方案
我认为你需要orWhereHas
方法。它看起来像
$searchTerm = request('search-term');
if(!empty($searchTerm)) {
$user = OnlineCounsellingApplication::where('name', 'like', $searchTerm)
->orWhere('email', 'like', $searchTerm)
->orWhereHas('country', function ($query) use $searchTerm {
$query->where('name', 'like', $searchTerm);
})
->paginate(25)
->setPath('');
}
推荐阅读
- jquery - 如何使用ajax验证并提交验证成功的表单?
- php - 数组项值的总和
- haskell - 是否可以在 Haskell 中引用特定的实例函数?
- sas - SAS宏错误找到的位置参数比定义的多
- python - 如何从训练、测试和验证文件夹中的多个文件夹中拆分和复制文件
- vue.js - 如何通过仅提及父目录名称而不是文件名来导入 index.vue?
- java - 如何在长按或点击时获得点击文本?
- java - Spring Boot @Scheduled fixedDelay 操作
- javascript - NativeScript + javaScript - 动态页面导航
- python-3.x - 在 Windows 上编译 Python 包