私は1つに結合したいさまざまなモデルを用意しています(DataTablesインスタンスへの出力用)。Laravelで複数のEloquentコレクションを組み合わせる方法
これまでのところ、私はこれを行っている(実際には約15のモデルがありますが、私はここ2を示すよ):これはうまくトリックを行っているように見えた第一印象で
$all_records = new Collection;
$care_plan_updates = \App\CarePlanUpdate::where('resident_id', $resident->id)->where('closed','0')->get();
if($care_plan_updates) $all_records = $all_records->merge($care_plan_updates);
$medication_errors = \App\MedicationError::where('resident_id', $resident->id)->where('closed','0')->get();
if($medication_errors) $all_records = $all_records->merge($medication_errors);
return Datatables::of($all_records)
。しかし、私は、マージメソッドがID値を共有するレコードを結合していることに気付きました。だから、例えば、12のIDを持つCarePlanUpdateは、私はID列を「忘れる」しようとしている12
のIDでMedicationErrorレコードによって上書きされるが、これは何の影響も与えていないようです:
if($care_plan_updates) $all_records = $all_records->merge($care_plan_updates->forget('id'));
理想的には、重複する値を持つ行をマージすることなく、2つのコレクションを単純に組み合わせるメソッドが必要です。私は異性に慣れていないので、私が間違っているところへのガイダンスは本当に感謝しています!