在WRITE连接上访问Eloquent的一对一关系

时间:2017-03-17 10:08:06

标签: php laravel laravel-5.2

在我的应用中有一种情况,我需要在访问关系时强制数据库WRITE连接。我该怎么办?

模型

class User extends Model
{
    /**
     * Get the phone record associated with the user.
     */
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

class Phone extends Model
{
    /**
     * Get the user that owns the phone.
     */
    public function user()
    {
        return $this->belongsTo('App\User');
    }
}

现在,我已经获得了这段代码:

$user = $request->user();

if ($user && $user->phone) {
    // do something...
}

现在,我需要对此强制执行WRITE:$user->phone

我知道 onWriteConnection() 方法,但它返回一个Builder对象,我无法使用->phone关系。< / p>

我知道如何强制下面这样的东西吗?

// Warning: pseudo code!
if ($user && $user->onWriteConnection()->phone) {/*...*/}

1 个答案:

答案 0 :(得分:0)

如果您使用多个Connection,请尝试使用此功能。 例如:

'read' => [
    'host' => '192.168.1.1',
],
'write' => [
    'host' => '196.168.1.2'
],
$user = DB::connection('write')->select(...);