laravel查询生成器不将变量标识为整数,而是添加引号

tyg4sfes  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(355)

当我尝试跑步时:

$alunos = DB::table('students')
    ->select('students.id','students.name','students.matricula','students.birth')
    ->join('horarios_has_students','horarios_id','=',DB::Raw($id))
    ->whereRaw('students.id = horarios_has_students.students_id')
    ->where('students.situation',1)
    ->orderBy('students.name', 'ASC')
    ->get();

而且效果很好。但如果我将db::raw($id)改为$id,如下所示:

... 
->join('horarios_has_students','horarios_id','=',$id)
...

它不起作用,因为在本例中horarios\u id是一个外键,laravel添加了引号(mysql查询中使用的引号)。所以我得到这个错误信息:
“sqlstate[42s22]:找不到列:1054”“on子句”“中的未知列”“3”“(sql:选择”“students”“。”“id”“,”“students”“。”“name”“,”“students”“。”“matricula”“,students.birth fromstudents inner joinhorarios\u has \u students onhorarios\u id=3其中students.id=horarios\u has \u students.students\u id和students\.situation=1 order byalunos.nameasc)“
with db::raw()之所以有效,是因为它删除了``,所以如果命令是。。。关于“horarios\u id`=3。。。我该怎么做才能解决这个问题?提前谢谢。

5us2dqdw

5us2dqdw1#

使用此选项:

$alunos = DB::table('students')
    ->select('students.id', 'students.name', 'students.matricula', 'students.birth')
    ->join('students.id', 'horarios_has_students.students_id')
    ->where('horarios_has_students.horarios_id', $id)
    ->where('students.situation', 1)
    ->orderBy('students.name', 'ASC')
    ->get();

相关问题