无法将传递的值与列名进行比较.拉拉维尔



我正在尝试使用 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

相关内容

  • 没有找到相关文章