私はexpenses
とexpense_splits
テーブルを持っています。 両方を1つの結果セットに結合したいと思います。 expense_splits
には、それが所属する費用から属性を追加する必要があります。これについては多くの方法があるようですが、まったく正しいとは思われません。Laravel Eloquentを使用して2つのテーブルを1つの結果セットに結合します。 merge/append/join
たとえば、このような左の結合はほとんど私のために働くが、すべての経費id #sを削除し、expense_splits
だけを保持する。
理想的には、私のexpense_splits
の結果に表示するために、私の経費表のすべての属性が必要です。もちろん、両方のテーブルで属性が同じでない場合は、expense_splits
属性を表示します(jelftjoinは私のために行いますが、expenses.id
を削除します)。
私は2つのコレクションをマージ/プッシュすることもできます。これは、1つの結果セット内にそれらを表示する迅速な方法です。しかし、私はそれぞれの費用の属性を追加する方法がわかりません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;
それは単にExpense::all()
のようにavaliableだと私expense_splits
テーブルからこれらの分割が含まれますので、このコードを配置するのに最適な場所とは何ですか。もちろん、最初にこれをやり遂げるにはどうすればいいですか?これを行うには多くの方法があるようです。
おかげで、はPatryk
データベース・スキーマ: 経費TABLE:(簡体字) | id | expense_date |金額| project_id |領収書| paid_by | check_id
EXPANSSE_SPLITS表:(簡体字) | id | expnese_id |金額| project_id |
DBスキーマを投稿できますか?これはEloquent関係(これらの左結合/結合クエリの代わりに)を適切に使用して解決できるように思えます。 –
Thantは素晴らしいでしょう!私はそれを上に追加しました。最後に私が探しているのは、ビューで '費用'に「経費精算」を追加することです。だから、私は私の経費表(ビューではなく、私はSQLテーブルを意味する)をプルすると、分割も親の費用の詳細と一緒に含まれています。 – dfeva
Laravelデータベース移行ファイルを使用してテーブルを作成しましたか?あなたは各テーブルの対応するモデルを持っていますか? –