Laravel中如何根据id条件获取数据

我正在尝试根据 case_id 获取数据,该数据来自 Cases 表,并且我在套接字表中查找 (case_id),但我在响应中得到空数组:


这是我的控制器:


public function index($case_id)

    {

        $id = kase::find($case_id);


        $data = DB::table('sockets')->where('case_id',$id)->get();

        return $data;

    }

我的路线:


 Route::get('/case-log/{id}', 'CaseLogController@index');

我哪里错了?


天涯尽头无女友
浏览 106回答 2
2回答

慕后森

kase::find($case_id) 为 null,因为 laravel 假定主键和索引名为“id”。要在您的型号上覆盖此设置kase,请按如下方式进行设置。您还可以按如下方式建立与模型的关系socket:class kase extends Model{    ...    protected $primaryKey = 'case_id';    ...            public function sockets()    {        return $this->hasMany(socket::class, 'case_id');    }}此外,您还需要让控制器方法参数与路线参数相匹配。所以:public function index($id){    $case = kase::with('sockets')->find($id);       return $case->sockets;}

慕妹3146593

路由中的 slug 名称应与方法中的参数名称匹配,index因此您必须更改其中之一Route::get('/case-log/{case_id}', 'CaseLogController@index');和public function index($case_id){    $id = kase::find($case_id);    $data = DB::table('sockets')->where('case_id',$id)->get();    return $data;}
打开App,查看更多内容
随时随地看视频慕课网APP