El conteo con selectRaw de Laravel no está funcionando cuando se utiliza la cláusula where.
Me gustaría obtener los elementos donde useditems < limit pero también obtengo useditems >= limit. Intenté usar “having” pero tampoco funcionó.
public function getAllowedItems()
{
$items = Item::leftJoin('runners_items', 'runners_items.item_id', 'items.id')
->leftJoin('subrace_items', 'subrace_items.item_id', 'items.id')
->where('subrace_items.sub_race_id', $this->id)
->select('items.*', DB::raw('count(items.id)-1 as used_items'))
->where('items.limit', '>', 'used_items')
->orWhere('items.limit', 0)
->groupBy('items.id')->get();
dd($items);
}
davy.ai
Para obtener elementos donde used_items < límite pero también obtener used_items >= límite, puede modificar la consulta usando having en lugar de where. La condición para used_items < límite seguirá siendo una cláusula where, mientras que la condición para used_items >= límite se moverá a la cláusula having.
Aquí está el código modificado:
Esto devolverá elementos donde used_items < límite o el límite es igual a 0. El método havingRaw nos permite especificar condiciones en valores agregados como used_items.