使用来自两个不同mysql表的值进行计算

zvokhttg  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(470)

我正在构建一种人力资源应用程序,其中必须用另一个mysql表的变量减少一个mysql表的变量。
我使用的cmv是laravel,所以我尽量使用db类。
这是第一个表,users:users\u表
第二个表,aanvraags:aanvraags\u表
我想把第一个表中的变量vakantie和第二个表中的变量duur减少。这将发生在休假请求被接受之后。我的控制器中已经有一个函数将变量goedgekeurd从0更改为1。函数如下所示: public function updateNieuw($id){ //update aanvraag $update_aanvraag = DB::table('aanvraags') ->where('id', $id) ->update([ 'goedgekeurd' => 1 //approved by the boss ]); 在同一个函数中,我想用变量duur来减少变量vakantie。
目前,我已经尝试了以下几种方法:

$update_vakantiedag = DB::table('aanvraags')
    ->select('duur')
    ->where('id', $id)
    ->get();

    $vakantie = DB::table('users')
    ->join('aanvraags', 'users.id', '=', 'aanvraags.user_id')
    ->where('aanvraags.id', '=', $id)
    ->update([
        'users.vakantie' => $update_vakantiedag
    ]);

所有这些都不能让我有任何收获。大多数情况下,我从第一个表的变量vakantie得到错误或值。
还原过程的发生对于应用是非常重要的。变量vakantie显示每个用户在接受新请求后的剩余假期,并显示在应用程序中。
欢迎任何提示或解决方案!
提前谢谢大家!

hvvq6cgz

hvvq6cgz1#

@乔纳斯陶登梅尔非常感谢!我改变了功能,它工作了! $update_vakantiedag = DB::table('aanvraags') ->select('duur') ->where('id', $id) ->first(); ```
$verlof = DB::table('users')
->join('aanvraags', 'users.id', '=', 'aanvraags.user_id')
->where('aanvraags.id', '=', $id)
->first();`

$vakantie = DB::table('users')
->join('aanvraags', 'users.id', '=', 'aanvraags.user_id')
->where('aanvraags.id', '=', $id)
->update([
    'users.vakantie' => $verlof->vakantie - $update_vakantiedag->duur
]);
非常感谢!
ilmyapht

ilmyapht2#

使用此选项:

$update_vakantiedag = DB::table('aanvraags')
    ->select('duur')
    ->where('id', $id)
    ->first();

$vakantie = DB::table('users')
    ->join('aanvraags', 'users.id', '=', 'aanvraags.user_id')
    ->where('aanvraags.id', '=', $id)
    ->decrement('users.vakantie', $update_vakantiedag->duur);

相关问题