当前位置: 首页 > 知识库问答 >
问题:

拉威尔搜索逻辑

解宏扬
2023-03-14

在过去的两天里,我一直在尝试建立一个相对简单的搜索系统,但我就是搞不懂。。基本上,我有几个select标签,其中包含过滤用户的选项。。大概是这样的:

  <div class="col-sm-4">
    <label for="price">Price:</label><br>
    <select class="browse-select" name="price">
      <option>Any</option>
      <option value="1">Less than 100$</option>
      <option value="2">More than 100$</option>
    </select>
  </div>

  <div class="col-sm-4">
    <label for="delivery">Delivery:</label><br>
    <select class="browse-select" name="delivery">
      <option>Any</option>
      <option value="1">1 month or less</option>
      <option value="7">7 days or less</option>
      <option value="3">3 days or less</option>
    </select>
  </div>

这些是在一个表格(获取请求表格),这是我的控制器。

public function index(Request $request){

  $users = User::paginate(10);
  $service = Service::all();

  //Search Logic

  $category = $request->input('category');
  $price = $request->input('price');
  $delivery = $request->input('delivery');

  $searchQuery = Service::with('user');

  $searchQuery->where('category','=',$category);

  if ($price == 1) { //price input has a value of 1 which means (less than 100)
    $searchQuery->where('price','<',100)->where('category','=',$category);
  }elseif($price == 2){
    $searchQuery->where('price','>',100)->where('category','=',$category);
  }

  $result = $searchQuery->get();

  return view('browse.index', compact('users','service','result'));
}

正如你所看到的,我在用户和服务之间有一种关系。因为我需要访问用户的服务,以便比较值和查询数据库。

到目前为止,我所拥有的只适用于一种选择。如果我选择了一个类别,它可以正常工作并显示用户。但是,例如,如果我尝试选择一个类别和一个价格,那么它将返回所有用户。我应该如何正确地做到这一点?我觉得我错过了一些东西。。

共有1个答案

费承载
2023-03-14

我认为您需要添加额外的检查并拆分查询。差不多

$searchQuery = Service::with('user');

if($request->has('category'))
{
    $searchQuery->where('category', $request->input('category'));
}

if($request->has('price'))
{
    $operator = (1 === $request->input('price')) ? '>' : '<';

    $searchQuery->where('price', $operator, 100);
}

$result = $searchQuery->get();
 类似资料:
  • 我目前正在研究构建SaaS构建管理工具。我想知道的是,如果我使用laravel passport作为api令牌,我如何为用户分配角色,例如: SuperAdmin:可以创建项目|可以创建新用户并为用户分配角色。 管理员:可以查看项目。 因为我希望能够根据用户权限隐藏前端上的元素。 例如,如果我使用传统的laravel应用程序,我可以使用委托和刀片指令@role('admin')来显示基于用户权限类

  • 我对拉威尔望远镜的部分有点困惑。 我有一个用户模型和表。 如何为用户分配用户、客户和/或管理员的角色。 我有一个带有vue和laravel api后端的水疗中心。我用https://laravel.com/docs/5.3/passport#consuming-使用javascript创建api 我如何分配哪个用户模型具有哪些作用域? 还是范围与角色不同? 您将如何实现这一点? 提前谢谢!

  • 我的分页工作正常,但是当使用搜索组件时,它只显示结果的第一页。我的页面URL没有搜索看起来像:http://localhost:8000/dictionary-management/postcode?page=2它的工作正确。 带搜索的我的第一页URL:http://localhost:8000/dictionary-管理/邮政编码/搜索和它的工作正常。 带搜索的我的第二页URL:http://l

  • 我对Laravel截断的数据有一个小问题。我将传递给我的后端值,该值可以是表中定义的“百分比”或“金额”,但在表中也可以为null,但每次尝试将其设置为null时,都会出现如下错误: {"discount_currency":["您输入的值无效。"]} 或者当我从处理请求中删除enum时,它会说 所以我传递数据抛出API从我的Vue,这个婴儿车的请求看起来像: 所以如果我删除...我有第二个错误。

  • 我正在构建一个Laravel web应用程序,其中我需要一个动态图像库,我构建了一个后端管理面板,可以在其中添加图像,我成功地将图像添加并保存到数据库中,但我无法编辑或删除它们。 错误是: UrlGenerationException中的ErrorException。php第17行:缺少[Route:galleries.update][URI:backend/galleries/{gallery}

  • 我试图设置一个属性,使用@产量和@部分,但如何?我试图用 和 但是它返回id= 我知道我可以用默认的id来管理它,但我不喜欢这种方式,如果我需要使用自定义属性呢?

  • 我正在使用这个库:https://github.com/davibennun/laravel-push-notification 用于发送推送通知。我使用了示例代码,我的iPhone上的推送消息正在工作。 现在我只想向多个设备发送一条消息。文件上说我需要使用: 但是我想从devicecollection上的数据库中得到一个foreach循环。我该怎么和拉威尔一起做?非常感谢!

  • 有办法覆盖Laravel中的GenericUser类吗? 当前身份验证使用GenericUser作为Auth::Operations的返回对象, 我希望它是我的用户类从我的模型。这是否可行呢?