業(yè)務(wù)場(chǎng)景為一個(gè)主庫(kù),多個(gè)業(yè)務(wù)庫(kù),類(lèi)似多租戶場(chǎng)景,主庫(kù)數(shù)據(jù)共享,之前使用tp框架時(shí),使用的方案是針對(duì)每個(gè)請(qǐng)求生命周期,根據(jù)參數(shù)在中間件中動(dòng)態(tài)設(shè)置默認(rèn)數(shù)據(jù)庫(kù)連接。主庫(kù)模型指定連接,業(yè)務(wù)庫(kù)模型不指定連接,會(huì)使用默認(rèn)連接。請(qǐng)問(wèn)在webman中該如何設(shè)計(jì),避免模型需要指定數(shù)據(jù)庫(kù)連接及無(wú)法使用模型中的事件?
已搜索,無(wú)可用方案。
class User extends Model
{
protected $connection;
public function construct($connection)
{
$this->$connection = $connection;
parent::construct();
}
}
用的時(shí)候指定連接
$model = new User('website');
更進(jìn)一步,你可以在中間件里給$request設(shè)置一個(gè)臨時(shí)屬性存儲(chǔ)當(dāng)前connection連接名,例如
$request->connectionName = 'website';
實(shí)例化的時(shí)候
$model = new User($request->connectionName);
再進(jìn)一步,modle可以這樣寫(xiě)
class User extends Model
{
protected $connection;
public function construct()
{
$this->$connection = request()->connectionName;
parent::construct();
}
}