我正试图根据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;
}