如何在Laravel中基于id条件获取数据



我正试图根据case_id(来自cases表(和sockets表中的Ifk(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');

我哪里错了?

由于laravel假定主键和索引名为"id",所以kase::find($case_id(为null。要覆盖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;
}

路由中的段塞名称应该与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;
}

最新更新