需要あるのかしら・・・
と思いながら備忘録的に書いています。
ことの発端は
- DBからとってきたEloquentオブジェクト
- KVSにmessagepackされたEloquentオブジェクト
この2つをマージしてCollectionにして呼び出し元では気にせずに
echo $model->name;
としたいというではありませんか!
結論
- はてさてそんなことできるのかと思いLaravelのコードを読んでみて試してみた。
$fromdb = HogeModel::where('id', '>=', 100)->get();
$fromkvs = Cache::get('key_99');
// 単純に全くゼロの状態でつくりたいときは
$collection = \Illuminate\Database\Eloquent\Collection::make($fromkvs);
// マージしたいときは
$collection = $collection->merge($fromdb);
- これで受け取った側はそのままforeachしてプロパティにアクセスができる。
- わかってしまえば簡単ですね。