laravel - Query 中的 WhereIn 不适用于数组,有什么解决方案吗?
问题描述
我scopeFilter
在模型中定义了以下代码
public function scopeFilter($query, array $filters){
$query->when($filters['subjects'] ?? null, function ($query, $data) {
//Subjects ids will be comma seperated string eg : 127,125
$subject_array = explode(',', htmlspecialchars_decode($data))
$query->where(function ($query) use ($subject_array) {
$query->whereIn('subjects_ids', $subject_array);
});
});
$query->when($filters['topics'] ?? null, function ($query, $data) {
//topics ids will be comma seperated string eg : 127,125
$topic_array = explode(',', htmlspecialchars_decode($data))
$query->where(function ($query) use ($topic_array) {
$query->whereIn('topics_ids', $topic_array);
});
});
$query->when($filters['search'] ?? null, function ($query, $search) {
$query->where(function ($query) use ($search) {
$query->where('name', 'like', '%'.$search.'%');
});
});
}
这是我在控制器中使用它的方式
$exams = Exams::filter(\Request::only('search', 'subjects','topics'))
->orderBy('status', 'DESC')
->orderBy('updated_at', 'DESC')->transform(....);
如果这是在 url 查询中传递的,那么结果将为空。我在这里做错什么了吗?
基本上是三个过滤器,搜索工作正常,但主题和主题不起作用。
解决方案
认为你错过return
了 scopeFilter
推荐阅读
- grpc - Node.js (grpc-js) 中的 HTTP/2 流控制
- mysql - 如何在 CREATE TABLE...SELECT 中创建主键?
- quarkus - ApplicationScoped bean 观察启动/停止和模拟的预期行为
- jq - 如何使用jq将多个json文件合并为一个而不重复?
- android - 如果用户通过 instagram 成功登录,则发出 jwt 令牌
- python - 为什么我的 python re 模式不适用于空格分割?
- powershell - 计算这些子文件夹中的子文件夹和 .exe 文件的数量
- python - “经理”没有属性“get_by_natural_key”
- html - 简单的 Streamlabs OBS 文本淡入淡出。淡入不起作用
- python - 为什么有些链接没有从请求标头返回引用者?