我如何需要把它變成一個查詢?
$yearsInvoices = ModelOne::query()
->select(DB::raw('DISTINCT(YEAR(date)) as year'))
->groupBy('year')
->pluck('year')
->toArray();
$yearsExpenses = ModelTwo::query()
->select(DB::raw('DISTINCT(YEAR(date)) as year'))
->groupBy('year')
->pluck('year')
->toArray();
$years = \array_merge($yearsExpenses, $yearsInvoices);
將不勝感激一些幫助。可以像這樣連接這兩個表:
->join(modeltwo_table, modeltwo_table.c_id, modelone_table.c_id)
我有什么:
$yearsInvoices = ModelOne::query()
->join(modeltwo_table, modeltwo_table.c_id,'=', c_id)
->select([
DB::raw('DISTINCT(YEAR(date)) as modelone_year'),
DB::raw('DISTINCT(YEAR(modeltwo_table.date)) as modeltwo_year')
])
->groupBy('modelone_year')
->groupBy('modeltwo_year')
->pluck('modeltwo_year', 'modelone_year')
->toArray();
但它沒有用。
uj5u.com熱心網友回復:
事實證明,你使用 DISTINCT 的方式是行不通的,因為 Laravel 會生成無效的 SQL 語法。嘗試這樣的事情:
$yearsInvoices = ModelOne::query()
->join(modeltwo_table, modeltwo_table.c_id,'=', c_id)
->select('YEAR(date)) as modelone_year', 'YEAR(modeltwo_table.date)) as modeltwo_year')
->distinct()
->groupBy('modelone_year')
->groupBy('modeltwo_year')
->pluck('modeltwo_year', 'modelone_year')
->toArray();
寫完這個答案后,我意識到可能有一種更簡單的方法,試試這個:
$yearsInvoices = ModelOne::query()
->join(modeltwo_table, modeltwo_table.c_id,'=', c_id)
->select(
DB::raw('DISTINCT YEAR(modelone_table.date) as modelone_year, YEAR(modeltwo_table.date) as modeltwo_year'))
->groupBy('modelone_year')
->groupBy('modeltwo_year')
->pluck('modeltwo_year', 'modelone_year')
->toArray();
uj5u.com熱心網友回復:
對你有用的是某種工會:
$yearsInvoices = ModelOne::query()
->select(DB::raw('DISTINCT(YEAR(date)) as year'));
$yearsExpenses = ModelTwo::query()
->select(DB::raw('DISTINCT(YEAR(date)) as year'));
$allYears = DB::table($yearsInvoices->union($yearsExpenses))
->select(DB::raw('DISTINCT(year) as year'))
->pluck('year')->toArray();
這將創建聯合查詢(它將連接兩個結果表),然后使用生成的聯合作為新選擇的目標,該新選擇本身將從該聯合中選擇不同的年份,從而導致(希望)每個表中的所有不同年份
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/419110.html
標籤:
