Override table prefix for a model

陌路散爱 提交于 2019-12-06 03:10:56

问题


Hello I've in config/database.php a prefix (mysql) like this:

     'prefix' => 'myprefix_',

But I need, only for one model, to use a different prefix like:

     protected $table = 'otherprefix_mytable';

In this way laravel looking for "myprefix_otherprefix_mytable".

Any help?


回答1:


In your app/config/database.php make 2 different connections like

'connections' => array(

        # first prefix
        'mysql1' => array(
            'driver'    => 'mysql',
            'host'      => 'host1',
            'database'  => 'database1',
            'username'  => 'user1',
            'password'  => 'pass1'
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => 'prefix1',
        ),

        # second prefix
        'mysql2' => array(
            'driver'    => 'mysql',
            'host'      => 'host1',
            'database'  => 'database1',
            'username'  => 'user1',
            'password'  => 'pass1'
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => 'prefix2',
        ),
    ),

And then later in model you can use different connection

class SomeModel extends Eloquent {    
    protected $connection = 'mysql2';    
}

For more help check this




回答2:


Default table prefix can be overriding in laravel model as following example:


public function __construct(array $attributes = array()) {
    $colletion = Config::get('database');
    $collection['connections']['mysql']['prefix'] = 'consultancy_';
    Config::set('database',$collection);
    parent::__construct($attributes);
}


来源:https://stackoverflow.com/questions/42394101/override-table-prefix-for-a-model

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!