Search code examples
phplaraveleloquentormrelationship

Eloquent select rows with empty string or null value


I have something like $user->albums()->where('col', NULL), it works fine then I tried to extend it to empty strings with $user->albums()->where('col', NULL)->or_where('col', '') and it's not working.

Also I saw on this post that I could use where_null('col') but it's not working and it's not documented. Any simple method to select where empty or NULL col


Solution

  • Try using orWhereNull for the second clause:

    $users = DB::table('users')
            ->where('col', '=', '')
            ->orWhereNull('col')
            ->get();
    

    Or if you have multiple conditions in the query, you have to wrap the two in a closure:

        $users = DB::table('users')
                 ->where(function(\Illuminate\Database\Eloquent\Builder $query) {
                    $query->where('col', '')->orWhereNull('col');
                })
                ->where('col2','val2')
                ->get();