1
次のコードを熱心に読み込みたいと思います。Laravel:Eloquent Eagerをカスタムクエリでロードする
return DB::table('container_slots')
->where('occupied', false)
->join('plate_containers','container_slots.plate_container_id', '=', 'plate_containers.id')
->select('plate_containers.name AS Container', DB::raw('count(container_slots.slot) as no_of_slots'))
->groupBy('plate_container_id')->get();
インデックスメソッドの呼び出し時。
public function index()
{
$plateContainers = PlateContainer::with('equipmentStatusCode','storageLocation','plateContainerType')->paginate(10)->toArray();
return response()->success($plateContainers);
}
そうする最良の方法は何ですか?
私はこのようなことをするかもしれないと思った。
PlateContainerモデル
public function slotsCount()
{
return $this->containerSlots()
->where('occupied', false)
->join('plate_containers','container_slots.plate_container_id', '=', 'plate_containers.id')
->select('plate_containers.name AS Container', DB::raw('count(container_slots.slot) as no_of_slots'))
->groupBy('plate_container_id');
}
public function getSlotsCountAttribute()
{
$this->load('slotsCount');
$related = $this->getRelation('slotsCount');
return $related;
}
しかし、これは
"メッセージ" を返します: "メソッドaddEagerConstraintsが存在しません。"、お時間を
感謝を。
これは、空の配列 '' get_slots_count_attribute ':[] 'を返します。 – user3641381
空の結果セットは、データによっては有効な結果です。 'slotsCount()'のクエリは実際に情報を取得していますか?私はクエリがその仕事を最初にしていることを確認します。 –
'slotsCount()'は何も返しません。私は、それがちょうどうまく動作するクエリの倍数の時間をチェックしました。 – user3641381