【问题标题】:Laravel Query Builder - how to format the query using joinsLaravel Query Builder - 如何使用连接格式化查询
【发布时间】:2017-12-10 19:45:42
【问题描述】:

我知道这是一个写得很糟糕的查询。如何使用 Laravel 查询构建器重写它?

SELECT tgi.rate, tgi.tax_types_id, tt.name, tt.sales_chart_master_id, tt.purchase_chart_master_id  
FROM tax_group_items tgi, tax_types tt 
WHERE tgi.tax_groups_id = (SELECT tax_groups_id FROM customers WHERE id=2) 
AND tt.id = tgi.tax_types_id 
AND tt.id NOT IN (SELECT tax_types_id FROM item_tax_type_exemptions WHERE item_tax_types_id = (SELECT item_tax_types_id FROM products WHERE id = 1))

【问题讨论】:

  • 也发布你雄辩的模型
  • 请同时发布模型类。

标签: php laravel join laravel-query-builder


【解决方案1】:

如果您在模型类中发布您的关系,答案会更容易和更清晰。如果您不知道如何定义关系,请转到官方文档的查询构建器部分。 如果您不想定义关系或不想使用它们,请使用此

$query = DB::select('your query');

【讨论】:

    【解决方案2】:
    DB::table(DB::raw('tax_group_items tgi, tax_types tt'))
        ->select(['tgi.rate', 'tgi.tax_types_id', 'tt.name', 'tt.sales_chart_master_id', 'tt.purchase_chart_master_id'])
        ->whereRaw('tgi.tax_groups_id = (SELECT tax_groups_id FROM customers WHERE id=2)')
        ->where('tt.id', 'tgi.tax_types_id')
        ->whereRaw('tt.id NOT IN (SELECT tax_types_id FROM item_tax_type_exemptions WHERE item_tax_types_id = (SELECT item_tax_types_id FROM products WHERE id = 1))')
        ->get();
    

    【讨论】:

      猜你喜欢
      • 2015-10-29
      • 2019-05-19
      • 2013-08-23
      • 2016-05-12
      • 2015-10-02
      • 2019-10-31
      • 2021-02-04
      • 2020-05-03
      • 2020-02-20
      相关资源
      最近更新 更多