Custom filtering

Is it possible to define custom filter that does not filter out specific rows? I’ve orderlocked - field in the database and all rows that have value 1 for this I would like to show on the GridView even if it would be otherwise filtered out. Thanks.

What does your Query/DataProvider code look like at the moment?

Almost the same as it comes with basic-configuration, haven’t tweaked that much. Something specific you want to know?

You could do something like

$query->orWhere(['orderlocked' => 1])

Thanks but this creates WHERE (orderlocked=1) AND statement to the query and will show only the mentioned rows. How to create OR statement?

That’s odd. The documentation clearly states

I’ve found that the order in which you place ->*Where() statements matters. I use

        $announceModel = Announcement::find()

                ->where(['>=', 'end_date', time()])

                ->orWhere('end_date IS NULL')

                ->andWhere(['<=', 'start_date', time()])

                ->orderBy('start_date DESC')


This gives me every announcement that the ‘start_date’ has passed AND ‘end_date’ has not come OR ‘end_date’ is NULL (No End Date).

It took awhile to get the order of where() clauses in the right order.

Still having problems with ->select() of a field from a ->joinWith() relation. :(

Indeed, it’s odd. Perhaps the order means something here, I don’t know. I’ve spent now quite some trying to fix this issue.

This works (finally):

if ($query->where)


	$query->orFilterWhere(['=', 'orders.orderlocked', 1]);