Laravel 加入后如何使用流利的语法更新记录?
我试图使用流利的语法和雄辩的语言来实现与下面的SQL查询相同的结果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属性的正确方法是什么 注意,每个模型指向不同的数据库。您
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可以正常工作