【发布时间】:2014-10-18 03:17:44
【问题描述】:
我正在尝试找出过滤此查询的最佳方法,我尝试了一些不同的方法,但无法提出可靠的解决方案。
基本上我们有一个很好的通用查询,它完全可以满足它的需要,问题是我需要能够过滤答案表上的用户输入。
$profiles = User::with('photos', 'answers')
->where('id', '!=', $user_id)
->where('gender', $gender)
->where('location', $location)
->where('deleted_at', null)
->whereNotExists(function($query) use ($user_id)
{
$query->select(DB::raw('user_id1, user_id2'))
->from('approves')
->whereRaw("users.id = approves.user_id2 AND approves.user_id1 = '$user_id'");
})
->whereNotExists(function($query) use ($user_id)
{
$query->select(DB::raw('user_id1, user_id2'))
->from('likes')
->whereRaw("users.id = likes.user_id2 AND likes.user_id1 = '$user_id'");
})
->take(15)
->get();
这使用几个用户输入来更改查询,现在用户还可以根据用户的个人资料答案按各种其他条件进行过滤,这正是我遇到的问题。
answers 表的布局是 id、user_id、question_id,answer 必须是这样的,以便以后扩展。
有没有人知道我如何使用各种其他输入进行过滤,例如,如果用户按 question_id '1' 过滤并回答'awesome'。值得注意的是,有多个输入,而不仅仅是一个要比较的输入,而且它们只需要在输入后进行比较。
非常感谢任何想法或建议:)
编辑:
id | user_id | question_id | answer
1 | 2 | 1 | dad
2 | 2 | 2 | lion
3 | 2 | 3 | 5
【问题讨论】:
-
要比较倍数,你应该使用 IN().. 你能提供一些数据给我们看看吗?
-
@JohnRuddell 关于数据我已经编辑了这个问题以包含一个小例子,不确定这是否会有很大帮助,但这是该表的一般布局和数据结构,我想知道是否表本身就是问题之一,如果我正在尝试做的事情甚至可以很好地工作
标签: php mysql laravel laravel-4