Я хотел бы с нетерпением загружать следующий фрагмент кода.Laravel: Eloquent Eager loading с пользовательским запросом
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