【问题标题】:Integrity constraint violation: 1052 Column 'subject' in where clause is ambiguous完整性约束违规:1052 列“主题”在 where 子句中不明确
【发布时间】:2020-04-11 06:32:38
【问题描述】:

我正在尝试获取特定主题、测试和学生的结果,但到目前为止我遇到了上述错误,我已经尝试过这个东西并得到了上述错误。

 $result = DB::table('results')
    ->where([
        ['subject',$request->subject],
        ['test',$request->test],
        ['user_id',$request->name]
    ])
     ->join('users','results.user_id','=','users.name')
    ->join('tests','tests.id','=','results.test')
    ->join('subjects','subjects.id','=','results.subject')
    ->select('results.*','users.name','tests.test_name','subjects.subjects')
    ->get();

【问题讨论】:

    标签: laravel-5 controller


    【解决方案1】:

    subjectsresults 表都有一个名为results 的列,因此 MySQL 错误告诉您数据库不确定您要选择哪一个。你可以试试:

    ->where([
        ['subjects.subject', $request->subject],
        ['test', $request->test],
        ['user_id', $request->name]
    ])
    

    请注意,您的 select 子句中也存在同样的问题。您可能希望将 subjects.subjects 别名为其他名称,例如

    ->select('results.*', 'users.name', 'tests.test_name',
             'subjects.subjects AS s_subjects')
    

    【讨论】:

    • 感谢您抽出宝贵的时间,但我在结果中有列“user_id”、“test”、“subject”,在数据表中我想获取保存在“tests”表中的“test_name”,保存在 'users' 中的 'student name' 和 'subjects' 列中的表 'subjects' 中的 'subject name' 现在告诉我获取这些数据的最佳方式是什么。
    • 这是一个不同的问题。这不是你上面问的。
    • 最后这就是我想要得到的。
    • 太棒了。然后你可以提出另一个问题。
    • 好吧,发布另一个问题需要 90 分钟。请在这里指导我
    猜你喜欢
    • 2013-10-16
    • 2020-10-13
    • 2019-04-14
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    • 2022-11-24
    相关资源
    最近更新 更多