我有一个简单的查询来发帖,它返回所有帖子。我已经在同一个查询上实现了搜索。
我获取所有数据的查询:
$userPostDetails = Post::with(['product','postattribute.attribute.category','user.userDetails'])
->offset($offset)
->limit($limit)
->whereStatus("Active")
->whereIn('product_id', $userApprovalProductIDs)
->whereIn('status', $demand_or_supply)
->orderBy('id','desc');
if($title) {
$userPostDetails->whereHas('product', function ($query) use ($title) {
$query->where('title','=', $title);
});
}
$userPostDetails->get();
它搜索完整数据在product
表上适用的条件。但是,如果我想在posts
表的同一个表中进行搜索,我可以像$title
那样单独执行此操作,因此每当我在$search
中执行此数据时,此单独查询都会执行。
我怎么能这样做?
答案 0 :(得分:1)
您可以使用{
"rules": {
//"messages": {
// only authenticated users can read and write the messages node
".read": "auth != null",
".write": "auth != null",
//}
}
}
运算符,文档here,当函数检查变量是否为空或为空时,如果存在,它将执行回调并添加查询条件:
when
编辑:
或者你可以使用这样的默认值:
->when($demand_or_supply, function($query) use ($demand_or_supply) {
$query->whereIn('status', $demand_or_suppl);
})
->orderBy('id','desc')
->when($title, function ($query) use ($title) {
$query->whereHas('product', function ($query) use ($title) {
$query->where('title','=', $title);
});
})
->get();