1
我正在创建一个多租户应用程序并为每个用户和他/她的次用户分配一个数据库。
我首先为该用户获取数据库名称/密码/用户名,然后我需要将其作为所有数据库操作的默认值。
如何在Laravel 4中完成此操作?为模型设置数据库连接?
我正在创建一个多租户应用程序并为每个用户和他/她的次用户分配一个数据库。
我首先为该用户获取数据库名称/密码/用户名,然后我需要将其作为所有数据库操作的默认值。
如何在Laravel 4中完成此操作?为模型设置数据库连接?
您可以使用的连接方法:
User::connection('master')->where('name', $name)->get();
,您还可以使用存储库模式,以帮助您这也太:
class PostRepository {
private $connection = 'default-connection';
public function setConnetion($connection)
{
$this->connection = $connection;
}
public function all()
{
return Post::on($this->connection)->all();
}
public function query()
{
return Post::on($this->connection);
}
}
它可以让你:
$post = new PostRepository;
$post->setConnection('new-connection');
return $post->query()->where('name', $name)->get();
或
return $post->all();
您还可以创建一个BaseModel,做它里面:
class BaseModel extends Eloquent {
private $connection = 'default-connection';
public function __construct()
{
if (Auth::check())
{
$this->setConnection(Auth::user()->database_connection);
}
}
}
class Post extends BaseModel {
}
是不是有一个更简单的方法?而不是在每个模型上都这样做?我可以在模型构造函数中加入一些东西吗? –
另外,我相信它是User :: on('connection-name') - > find(1)或者我错了? –
你只受限于你的想象力。而且,是的,你是对的淘气编码器。只需编辑即可提供在所有模型中执行此操作的方法。 –