加入后如何使用Eloquent流利语法更新记录?
How to use Eloquent fluent syntax to update records after joining?
我正在尝试使用 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
table 有一个名为 group
的模型。此外,quotas
table 有一个名为 quota
的模型
加入两个模型并递增 quota.completed
属性 的正确方法是什么?
注意,每个模型指向不同的数据库。
您首先需要定义 groups
和 quotas
之间的关系:
public function quota(){
return $this->hasOne('App\Quotas', 'qid', 'qid');
}
那么您的 Eloquent 查询将是:
Groups::where('iid', 12234)->with('quota')->first()->quota()->increment('completed');
这是假设 where
子句只会 return 一行。它是 return 的多个,您将需要遍历 returned:
的集合
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');
我正在尝试使用 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
table 有一个名为 group
的模型。此外,quotas
table 有一个名为 quota
加入两个模型并递增 quota.completed
属性 的正确方法是什么?
注意,每个模型指向不同的数据库。
您首先需要定义 groups
和 quotas
之间的关系:
public function quota(){
return $this->hasOne('App\Quotas', 'qid', 'qid');
}
那么您的 Eloquent 查询将是:
Groups::where('iid', 12234)->with('quota')->first()->quota()->increment('completed');
这是假设 where
子句只会 return 一行。它是 return 的多个,您将需要遍历 returned:
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');