如何在3个相关表之间创建条件

时间:2018-05-23 13:52:58

标签: php laravel

用sql打造, 我正在研究laravel并想要更改连接的用户链接的表的值 我有3张桌子:
考试中的用户(id)外键(user_id)

验证中的考试(id)外键(exam_id)
如何更改仅连接用户的验证? 他自己这么做 我想我们需要

 Auth::user()
    DB::table('verifications')->where([
    ['confirmation', 'non'],
    ['modifier', 'oui'],
    ])->update(['confirmation' => "oui"]);

3 个答案:

答案 0 :(得分:1)

您需要查询关系存在。但首先你必须在模型之间建立关系。

示例:

如果你需要更多的力量,你可以使用whereHas和orWhereHas方法来放置"其中"你的条件有疑问。这些方法允许您向关系约束添加自定义约束,例如检查注释的内容:

// Retrieve all posts with at least one comment containing words like foo%
$posts = App\Post::whereHas('comments', function ($query) {
    $query->where('content', 'like', 'foo%');
})->get();

更多:https://laravel.com/docs/5.6/eloquent-relationships#querying-relationship-existence

答案 1 :(得分:0)

如果您没有使用laravel关系,请使用连接。

DB::table('verifications')
    ->leftJoin('exams', 'verification.exam_id', '=', 'exams.id')
    ->leftJoin('users', 'exams.user_id', '=', 'user.id')
    ->where([
        ['verifications.confirmation', 'non'],
        ['verifications.modifier', 'oui'],
        ['users.id', Auth::user()->id]
    ])
    ->update(['verificationsconfirmation' => "oui"]);

答案 2 :(得分:0)

您似乎获得了考试ID,因此请在更新查询中添加:尝试如下:

DB::table('verifications')->with($exams)->->whereIn('exam_id', $exams->pluck('id') )->where([ ['confirmation', 'non'], ['modifier', 'oui'], ])->update(['confirmation' => "oui"]);

更新答案: 你已经有了“$ exams”变量,所以你不需要再加入任何表:试试这个:

DB::table('verifications')->whereIn('verification.exam_id', $exams->pluck('id') )->where([ ['confirmation', 'non'], ['modifier', 'oui'], ])->update(['confirmation' => "oui"]);