Laravel中最有效的方式来查询两个连接

时间:2014-09-03 11:12:32

标签: laravel laravel-4 eloquent

我有两个连接,' mysql'和' mysql2'托管在两个不同的盒子上。

On' mysql'有一个名为' account',on' mysql2'有一张名为'付款的表格。它使用PayPal IPN接受付款。

我从' mysql2'中提取数据使用名为'付款'并且有一个关于付款的字段'被称为' custom'其中包含进行PayPal付款的用户ID。我想链接'这两个以某种方式,所以我可以提取付款人的用户名。

我相信左边的约翰在这种情况下不会工作,因为它有两个关系,Eloquent的关系方法会起作用吗?我试过用它们无济于事。

我的查询是这样的:

$top_donators = Payment::selectRaw('month(created_at) as month, year(created_at) as year, sum(mc_gross) as amount, custom')
                                ->groupBy('year', 'month', 'custom')
                                ->orderBy('amount','desc')
                                ->get();

用户模型关系

public function payment()
    {
        return $this->hasMany('Payment', 'custom', 'id');
    }

付款模式关系

public function user() {
    return $this->belongsTo('User', 'id');
}

1 个答案:

答案 0 :(得分:0)

尝试添加 protected $connection = 'mysql';模型Accountsprotected $connection = 'mysql2';模型Payments

在您的关系中,请尝试将[database].[tablename].[columnname]指定为参数。

e.g。 return $this->belongsTo('User','mysql2.users.id');

来源:http://laravel.io/forum/02-12-2014-many-to-many-relationship-not-working-across-databases