• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Model - read/write connections

#1
Lightbulb 
A thought for Model - read/write connections:

Maybe the Model $DBGroup property could accept an array as:

PHP Code:
protected $DBGroup = [
 
   'read'  => 'slave',
 
   'write' => 'master'
]; 

And a new method like getConnection($type) to return the $db.

The builder() method could have a second param $type.

Then run the SELECTs, UPDATEs, etc according with the connection type.
Reply

#2
That was definitely something that was in my mental roadmap, I just hadn't had an opportunity to get there yet. I think failover is currently not implemented either. Sad

It would be nice to have the system automatically give the builder the right connection. I believe there's a isWriteType() method already though that may be too late in the process for it to work for this.

I would happily accept a PR for this!
Reply

#3
Yes. I found the isWriteType() in the \CodeIgniter\Database\Query class and also has one @todo in the \CodeIgniter\Database\BaseConnection::getConnection().

My thought is that the BaseConnection is not the place to decide if is a write or read connection because it uses a Database group. And the connection type should be based by group, because are required optimizations in the database according to the type. The failover is ok there.

So I came to the conclusion that Model would be the best place to decide which group to use. If someone wants to read/write outside the Model, just use the necessary group.

No?
Reply


Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


  Theme © 2014 iAndrew  
Powered By MyBB, © 2002-2021 MyBB Group.