2つの(できればより多くの)クエリの結果を結合/結合しようとしています。そして、それを選択的にいくつかの列/プロパティを選択してテーブル内のブレードビューに表示します。私はLaravel、eloquent/querybuilder(私は純粋なSQLでそれを行うことができましたが、それはもちろんポイントではありません)でしようとしています。おそらく複数のサーバでマルチテーブルのデータベースとテーブルを使用します。ポイントへの :ここでのコードのビットです:PHP、Laravelは2つのクエリの結果を結合し、html/bladeテーブルに選択的に表示します
$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で '(右)結合'に相当するものが必要です。 '名前'と '番号'の列は同じです。 まったくコレクションや配列のメソッドとその組み合わせは動作していないようです。 私はどんな助けにも大変感謝しています。
PS。また、selectRawを使用せずに特定のクエリの列から値の合計を得ることができない場合は、誰もが知っていると思います。
あなたはそれを組み合わせることができますか?どうした? –
配列(配列に変換する場合)が不均一なため、私は 'combine'を使用できません。私は正確に同等のSQL結合を必要とします。または、他の列の隣にある列を適切に表示する方法です。 –
明らかにするには:array_combine():両方のパラメータは同じ数の要素を持つ必要があります –