我正在尝试使用 where 子句来比较从 id 路由传递的值。为此,我使用了以下代码:
Route::get('Bill/{id}/students',['uses' =>'BillController@student']);
我需要将id与控制器中的列名进行比较,该列名grade_id。为此,使用了以下代码:
public function student($id)
{
$data['id'] = $id;
$students=Student::all()->where('grade_id',$data);
return view('bill.students',compact('students'));
}
但它返回空值。如果我传递直接值 1 而不是 $data。它工作得很好。任何人都可以为我提供解决方案吗?
使用 whereLoose()
而不是 where()
其中Loose() 此方法与 where 方法具有相同的签名; 但是,所有值都使用"松散"比较进行比较
源
为什么会这样?
$data
具有String
类型,并且即使传递数值$data
也将字符串类型与Int
类型进行比较。
(1 === '1') //False
(1 === 1) //True
(1 == '1') //True