【问题标题】:How to add subqueries in eloquent db of laravel 5?如何在 laravel 5 的 eloquent db 中添加子查询?
【发布时间】:2017-02-03 22:54:26
【问题描述】:

如果我使用 /api/location/event_name/event_status,我正在 laravel 5.3 中使用 eloquent 构建一个 api,那么我会得到结果。

但是当我使用/api/location/event_name/api/location/ 时,什么都没有。

如何编写查询以便我的所有链接都显示结果?

class events_api extends Controller
{
      public function events($location = "",$event_name="",$event_status="")
    {

$events = DB::table('event_table')
            ->join('event_details', 'event_table.event_id', '=', 'event_details.event_id')
            ->join('venue', 'event_details.venue_id', '=', 'venue.venue_id')
            ->where('venue.venue_city','=',$location)
            ->where('event_table.event_name','=','$event_name')
            ->where('event_table.event_status','=','$event_status')
            ->where('event_table.event_post_status','=','publish')
  ->select('event_table.event_title','event_details.event_start_ts','event_details.event_views','venue.venue_name','venue.venue_city','venue.venue_location')
            ->get();

           echo $events;
    }
}``

【问题讨论】:

标签: laravel eloquent laravel-5.3


【解决方案1】:

如果您想创建子查询,请尝试使用toSql 方法:

class events_api extends Controller
{
      public function events($location = "",$event_name="",$event_status="")
      {
          $subQuery = DB::table('event_table')
              ->join('event_details', 'event_table.event_id', '=', 'event_details.event_id')
              ->join('venue', 'event_details.venue_id', '=', 'venue.venue_id')
              ->where('venue.venue_city','=',$location)
              ->where('event_table.event_name','=','$event_name')
              ->where('event_table.event_status','=','$event_status')
              ->where('event_table.event_post_status','=','publish')
              ->select('event_table.event_title','event_details.event_start_ts','event_details.event_views','venue.venue_name','venue.venue_city','venue.venue_location');

         DB::table(DB::raw("{$subQuery->toSql()} as main_query"))
             ->mergeBindings($subQuery->getBindings())
         // build your query here
             ->get()
    }
}

如果您在子查询中使用任何绑定,您还需要mergeBindings

【讨论】:

  • 不想劫持这个问题,但是有没有 Eloquent 的方式?
猜你喜欢
  • 2018-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-19
  • 1970-01-01
  • 1970-01-01
  • 2019-05-23
  • 1970-01-01
相关资源
最近更新 更多