我有一個expenses
和expense_splits
表。 我想將兩者合併成一個結果集。每個expense_splits
都應該從它所屬的費用中添加屬性。似乎有很多方法可以解決這個問題,但沒有一個看起來恰到好處。用Laravel Eloquent將兩個表合併成一個結果集。合併/追加/加入
例如,這樣的leftjoin幾乎適用於我,但它刪除了我所有的費用id #s並且只保留expense_splits
。
$expenses = DB::table('expenses')
-leftJoin('expense_splits', 'expenses.id', '=', 'expense_splits.expense_id')
->get();
理想情況下,我需要從我的費用表中的所有屬性在我expense_splits
結果顯示。除非兩個表上的屬性都是相同的,否則顯示expense_splits
屬性(jelftjoin對我來說是這樣做的,但它會刪除我的expenses.id
)。
我也可以合併/推送我的兩個集合。這是在一個結果集內顯示它們的快速方法。但是,我不確定如何將費用屬性添加到每個expense_splits
。我需要將我的expense_splits
視爲常規費用(如果費用有分裂,我無法顯示..但我稍後會擔心)。永遠不會有我不需要我的應用程序的任何地方。
$splits = ExpenseSplit::all();
$expenses = Expense::all();
$expenses = $expenses->merge($splits);
我還可以追加到我的ExpenseSplits
的結果,但是,說實話,IDK的地方放置這種或者如果它甚至是有道理的。我需要將它放在某個地方,每當我撥打Expense::all()
時,我都無法複製&粘貼到應用程序中。
$expense_split = ExpenseSplit::find(34);
$expense_split->receipt = $expense_split->expense->receipt;
$expense_split->receipt_html = $expense_split->expense->receipt_html;
$expense_split->check_id = $expense_split->expense->check_id;
什麼是把這個代碼,以便它avaliable簡單,如Expense::all()
從我expense_splits
表中的這些裂縫將被列入的最佳場所。當然,我該如何着手做這件事。看起來有很多方法可以完成。
感謝,Patryk
數據庫模式: 開支表:(簡體) | id | expense_date |數額| project_id |收據| paid_by | check_id
EXPENSE_SPLITS TABLE:(SIMPLIFIED) | id | expnese_id |數額| project_id |
你可以發佈你的數據庫架構嗎?這聽起來像可以通過正確使用Eloquent關係來解決(而不是這些左連接/連接查詢)。 –
Thant會很棒!我已經在上面添加了它。我最終尋找的是在視圖中將'expense_splits'附加到我的'費用'中。因此,當我拉起我的費用表(在視圖中,而不是我的意思是一個SQL表)時,分割以及來自父母費用的細節一起包括在內。 – dfeva
您是否使用Laravel數據庫遷移文件創建表格?你有沒有得到每個表的相應模型? –