3

我正在尝试使用流利的语法和 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。此外,该quotas表有一个模型称为quota

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

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

4

1 回答 1

0

groups您首先需要定义和之间的关系quotas

public function quota(){
    return $this->hasOne('App\Quotas', 'qid', 'qid');
}

那么您的 Eloquent 查询将是:

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');
于 2017-02-14T23:44:38.957 回答