Php 如何查询从单个字符串中提取的多个术语的数据库

Php 如何查询从单个字符串中提取的多个术语的数据库,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,这是我获取主题的请求 http://localhost:8000/subject=English%2CArt 它把英语和艺术作为一门单独的学科,但应该分开。你知道我如何单独搜索这些主题吗 $students= Student::with(['subscriptions' => function($query){ $query->orderBy('subscriptions.id','desc'); }]) ->

这是我获取主题的请求

http://localhost:8000/subject=English%2CArt

它把英语和艺术作为一门单独的学科,但应该分开。你知道我如何单独搜索这些主题吗

 $students= Student::with(['subscriptions' => function($query){
            $query->orderBy('subscriptions.id','desc');
          }])
           ->whereHas('subjects', function ($query) use ($subject) {

              $query->where('name', 'like', "%{$subject}%")->orderByRaw('RAND()');

             })->distinct()->get();

您可以使用explode将主题从url分离为2个主题,在本例中为英语和艺术,然后您可以循环主题

   $subjects = explode(",", $subject);
    foreach($subjects as $subject){

        $students= Student::with(['subscriptions' => function($query){
                    $query->orderBy('subscriptions.id','desc');
                  }])
                   ->whereHas('subjects', function ($query) use ($subject) {

                      $query->where('name', 'like', "%{$subject}%")->orderByRaw('RAND()');

                     })->distinct()->get();
    }
也许我认为您可以在这里共享您的数据库模式,这样我们可以提供帮助,您还可以使用where来过滤主题的数据