当我尝试在laravel中使用左连接时,我收到以下错误:
SQLSTATE [42S22]:未找到列:1054'on子句'中的未知列'$ dat'(SQL:选择students
。id
,students
。{{1} } name
。attendance_student
来自date
students
attendance_student
students
id
。attendance_student
student_id
和attendance_student
。date
= $dat
)
基本上我想让特定日期的所有学生都参加
我的代码:
$dat = 2015-10-15;
$student = DB::table('students')
->leftJoin('attendance_student', function($join)
{
$join->on('students.id', '=', 'attendance_student.student_id');
$join->on('attendance_student.date', '=', $dat);
})
->select('students.id', 'students.name', 'attendance_student.date'
)
->get();
提供帮助
答案 0 :(得分:0)
您的问题:可变范围
<强>解决方案:强>
$dat = 2015-10-15;
$student = DB::table('students')
->leftJoin('attendance_student', function($join) use ($dat)
{
$join->on('students.id', '=', 'attendance_student.student_id');
$join->on('attendance_student.date', '=', $dat);
})
->select('students.id', 'students.name', 'attendance_student.date'
)
->get();
<强>解释强>
当访问在lambda函数范围之外声明的变量(function($join)
)时,使用use
语句允许访问函数内的那些变量。