Showing posts with label dynamic. Show all posts
Showing posts with label dynamic. Show all posts

Monday, August 13, 2018

Laravel Models Eloquent Dynamically change table name

Some times you need to use one model for many tables, that means you want the same model but with many tables . So the property table will be dynamically set .to achieve this all you have to do is to use a trait that do the job as shown in the following code:

 

 /* DynamicTable.php */ 
 
trait DynamicTable
{
    protected $connection = null;
    protected $table = null;

    public function bind(string $connection, string $table)
    {
        $this->setConnection($connection);
        $this->setTable($table);
    }

    public function newInstance($attributes = [], $exists = false)
    {
        // Overridden in order to allow for late table binding.

        $model = parent::newInstance($attributes, $exists);
        $model->setTable($this->table);

        return $model;
    }

}


let's say our Model is called Profile :
require_once("DynamicTable.php"); 
 
class Profile extends Illuminate\Database\Eloquent\Model {
 
 use DynamicTable;
 
 public $timestamps = false; 
   
} 
 

Now, when you need to retrieve Model you will create a new object of this model and assign table and connection if the connection is different from default:
profiel1 = new Profile;
prfoile->setTable ("profile01");
profile->setConnection("mysql");
$results = $profile->find(123);

To insert data you can do the same .
Some retrieving commands will not work like all(), but you can use where(1,1) and it will do the job.

Sunday, March 16, 2014

in Wamp PHP Startup: Unable to load dynamic library c:\php\

If you are using Wamp server, and when you try to switch between php versions or trying to swirch between Apache versions and you get an error message saying that Php cannot load the dynamic library that you know it is exist in the extensions folder. and the stupid wamp server  looking for that extension in a place other than the one mentioned in phpForApache.ini file.
The Problem here is that php-win.exe running without depending on apache server, So php will use the php.ini file that reside in php folder not the one that reside in Apache folder .
Because I didn't change this file (the one in php folder) and used to deal with phpForApache.ini because it is the one that will be copied to Apache folder .
To solve this issue just make the two files identical , that means when you make any changes to one of the be assure that you make these vhanges in the other one.