Imagine this query.
$model = new UserModel();
$user = $model
->where('id', 2)
->orWhereIn('id', [3, 4])
->find();
where('id', 2) will generate a bind in BaseBuilder with key _id_.
orWhereIn('id', [3, 4]) will do the same.
We will end up with one bind, when we should have two.
The final query will end up like this
SELECT *
FROM `users`
WHERE `users`.`id` = (3,4)
OR `users`.`id` IN (3,4)
I see that you have already tried to deal with this issue by adding a setBind-method in BaseBuilder. But whereIn() does not use this method. I've tried replacing
$this->binds[$ok] = $where_in;
With
$this->setBind($ok, $where_in);
But this does not solve the problem. I still end up with a query like this
SELECT *
FROM `users`
WHERE `users`.`id` = 2
OR `users`.`id` IN 2
Unfortunately I do not have more time to look at this. I hope someone else with take a look :-)
I found a fix anyway. Look at this.

having the same issue. Your solution fixed mine as well
Will have to dig a little deeper when I have a little more time, but that's not a perfect fix. It needs to be fixed in the setBind method, since that helps to ensure that name collisions don't happen, etc.
Most helpful comment
I found a fix anyway. Look at this.
