2017-02-03 2 views
3

Я создаю api в laravel 5.3, используя красноречивый, если я использую /api/location/event_name/event_status, тогда я получаю результаты.Как добавить подзапросы в красноречивый db laravel 5?

Но когда я использую /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; 
    } 
}`` 
+1

Http: // StackOverflow. com/questions/41983462/laravel-4-2-execute-query-without-use-elequent-query-builder/41994906 # 41994906 – shafiq

+0

Это очень помогло мне спасибо @shafiq –

+0

Я рад, что мой ответ помог вам – shafiq

ответ

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, если вы используете какие-либо привязок в подзапроса

+0

Don ' t хотите захватить этот квест на, но есть ли пылкий способ? –

Смежные вопросы