簡體   English   中英

PHP,Laravel連接兩個查詢的結果,並有選擇地將其顯示在html / blade表中

[英]PHP, Laravel join results of two queries and display it selectively in a html/blade table

我正在嘗試合並/合並兩個(最好是更多個)查詢的結果。 然后在表格的刀片視圖中有選擇地顯示它,僅選擇幾列/屬性。 我正在嘗試用雄辯的Laravel,雄辯的/ querybuilder來做到這一點(我可以在純sql中做到這一點,但這當然不是重點),因為它將使用多重數據庫和表,並且可能在多個服務器上使用。 關鍵:這是一些代碼:

$query1 = Documents::join('warehouses', 'analyticsData.documents.warehouse', '=', 'analyticsData.warehouses.id')
        ->selectRaw(
            ' analyticsData.warehouses.name name,
        analyticsData.documents.warehouse number,
        SUM(analyticsData.documents.value) takings1'
        )
        ->whereIn('analyticsData.documents.type', [1, 4, 5])
        ->whereDate('date', '>=', '2016-09-05')
        ->whereDate('date', '<=', '2016-09-10')
        ->limit('5000')
        ->groupBy('name1')
        ->get();

    $query2 = Documents::join('warehouses', 'analyticsData.documents.warehouse', '=', 'analyticsData.warehouses.id')
        ->selectRaw(
            ' analyticsData.warehouses.name name,
        analyticsData.documents.warehouse number,
        SUM(analyticsData.documents.value) takings2')

        ->whereIn('analyticsData.documents.type', [1, 4, 5])
        ->whereDate('date', '>=', '2017-09-04')
        ->whereDate('date', '<=', '2017-09-09')
        ->limit('5000')
        ->groupBy('name1')
        ->get();

然后,通過foreach循環,我想在表中的刀片中的屏幕上顯示結果的選定列。 實際上,我已經待了幾天,並嘗試過將結果與array_merge合並為數組,但它只是將一個數組追加到另一個數組的末尾。 我需要SQL中的'(right)join'等效項。 “名稱”和“編號”列相同。 坦白說,所有的collection或array方法及其組合似乎都不起作用。 我將非常感謝您的幫助。

PS。 另外,如果有人碰巧知道我如何不能從特定查詢的列中獲取值的總和,而不使用selectRaw,那我會欣喜若狂。

我做了查詢生成器的多個聯接。

這是我的代碼:

$result = DB::table('sub_categories')->join('categories', 'sub_categories.category_id', '=', 'categories.id')
        ->join('main_categories', 'main_categories.id', '=', 'categories.main_category_id')
        ->where([['main_categories.text', '=', $mainCategory], ['categories.text', '=', $category], ['sub_categories.text', '=', $subCategory]])
        ->select('sub_categories.id as subject_id')->get();

這可能會有所幫助:

$result = DB::table('users')->where([['users.user_id', $userId], ['ad_is_verified', true]])
        ->join('ads', 'ads.user_id', '=', 'users.user_id')
        ->where('ads.ad_id', '=', $addId)->get();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM