laravel - 如何在laravel 5的eloquent db中添加子查询?

标签 laravel eloquent laravel-5.3

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

但是当我使用 /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;
    }
}``

最佳答案

如果您想进行子查询,请尝试使用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()
    }
}

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

关于laravel - 如何在laravel 5的eloquent db中添加子查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42025025/

相关文章:

php - MySQL 在 Eloquent 中按字段排序

css - Laravel 使 :auth css stylesheet

php - Laravel 验证器和 excel 文件错误

laravel - 如何从laravel中的最新日期检索数据?

mysql - 借方余额 - 贷方使用 Eloquent

mysql - Laravel 获取每个用户最新答案的计数,其中 Preferred = True

javascript - 如何将ajax放入全局js中?

laravel - 是否可以从 Vue 组件中的方法更改 props 值?

PHP Laravel Gallery 将数组拆分为 3 列

php - 如何使用 Laravel Eloquent 动态填充复选框