finnito - 2 weeks ago

Hey all!

I've got a question: I would like to customise a table in the admin panel to only show certain results depending on the user that is logged in. I would like this to not be a filter because I only want to show entries associated with a community (stored in another stream) for which the user is an "admin". Therefore they shouldn't have the option to view another communities entries, only their own.

Is this possible?

Thanks :)

Answer

ryanthompson - 2 weeks ago

You can use the querying callback to start the query off right. An onQuerying method on your builder would do the trick. This method is resolved out of the IoC container so the builder is passed but you can method inject anything:

    /**
     * Fired just before querying
     * for table entries.
     *
     * @param Builder $query
     */
    public function onQuerying(Builder $query)
    {
        $user = auth()->user(); // Or dispatch a command

        $query->where('user_id', $user->getId());

        $query->orderBy('updated_at', 'ASC');
        $query->orderBy('created_at', 'ASC');
    }

ryanthompson - 2 weeks ago

You can use the querying callback to start the query off right. An onQuerying method on your builder would do the trick. This method is resolved out of the IoC container so the builder is passed but you can method inject anything:

    /**
     * Fired just before querying
     * for table entries.
     *
     * @param Builder $query
     */
    public function onQuerying(Builder $query)
    {
        $user = auth()->user(); // Or dispatch a command

        $query->where('user_id', $user->getId());

        $query->orderBy('updated_at', 'ASC');
        $query->orderBy('created_at', 'ASC');
    }

finnito - 2 weeks ago

Works a treat, thanks as always @ryanthompson!