groupStart() opens a grouped WHERE expression.
Purpose
groupStart() opens a grouped WHERE expression. It lets a controller customize Aksara Core behavior while keeping the request inside the built-in CRUD, rendering, permission, validation, and response pipeline.
When to Use
Use it when a controller needs to shape the generated dataset before calling render() without creating a separate custom query flow.
Reference
groupStart()
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| None | - | - | - | This method does not accept parameters. |
Return Value
static
Returns the current controller instance so it can be chained with other Core methods.
Behavior
groupStart() records a query instruction on the controller. Core applies that instruction when render() compiles the final query. It does not execute a database query by itself.
[!NOTE]
Every condition group must be closed with
groupEnd()before the query is rendered.
Basic Usage
$this->groupStart()->where('status', 'paid')->orWhere('status', 'processing')->groupEnd();
return $this->render('orders');
Advanced Usage
$this->select('orders.order_id, orders.order_number, customers.customer_name')
->join('customers', 'customers.customer_id = orders.customer_id', 'left')
->where('orders.deleted_at', null)
->orderBy('orders.created_at', 'DESC')
->limit(25);
return $this->render('orders');
Complete Example
namespace Modules\Orders\Controllers;
use Aksara\Laboratory\Core;
class Orders extends Core
{
public function index()
{
$this->setTitle(phrase('Orders'))
->groupStart()->where('status', 'paid')->orWhere('status', 'processing')->groupEnd();
return $this->render('orders');
}
}
Result
The final generated query includes this instruction before rows are serialized and rendered. API responses use the same prepared query.
Notes
- This method is chainable and returns the current controller instance.
- Call this before
render()so the query instruction is available during query compilation.
Common Mistakes
- Calling the method after
render(), because the query has already been compiled.
