Laravel 加入后如何使用流利的语法更新记录?

Laravel 加入后如何使用流利的语法更新记录?,laravel,laravel-5,eloquent,laravel-5.2,laravel-eloquent,Laravel,Laravel 5,Eloquent,Laravel 5.2,Laravel Eloquent,我试图使用流利的语法和雄辩的语言来实现与下面的SQL查询相同的结果 UPDATE t SET t.completed = t.completed + 1 FROM [groups] AS g INNER JOIN [quotas] AS t ON t.qid = g.qid WHERE g.iid = 12234 groups表有一个名为group的模型。另外,quota表有一个名为quota 加入两个模型并增加配额.completed属性的正确方法是什么 注意,每个模型指向不同的数据库。您

我试图使用流利的语法和雄辩的语言来实现与下面的SQL查询相同的结果

UPDATE t
SET t.completed = t.completed + 1
FROM  [groups] AS g
INNER JOIN [quotas] AS t ON t.qid = g.qid
WHERE g.iid = 12234
groups
表有一个名为
group
的模型。另外,
quota
表有一个名为
quota

加入两个模型并增加
配额.completed
属性的正确方法是什么


注意,每个模型指向不同的数据库。

您首先需要定义
配额
之间的关系:

public function quota(){
    return $this->hasOne('App\Quotas', 'qid', 'qid');
}
那么你有说服力的问题就是:

Groups::where('iid', 12234)->with('quota')->first()->quota()->increment('completed');
这是假设
where
子句只返回一行。如果返回多个,您将需要遍历返回的集合:

Groups::where('iid', 12234)->with('quota')->get()->each(function( $item, $key ){
    $item->quota()->increment('completed');
});
或者,您可以使用QueryBuilder:

DB::connection('connForGroups')->table('groups')
    ->join('dbname.quotas', 'groups.qid', '=', 'dbname.quotas.qid')
    ->where('groups.iid', '=', 12234)
    ->increment('dbname.quotas.completed');

你说它们在不同的数据库中,这些数据库在同一个服务器实例上吗?是的,它们在同一个服务器上,但不同的数据库。我使用两种不同的雄辩连接。每个模型都有一个名为
protected$connection='connectionname'的属性
定义连接。使用关系不起作用,但使用查询生成器起作用。@Jaylen请查看我的更新,现在使用Eloquent可以正常工作