表关系以及在laravel控制器中如何使用它
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了表关系以及在laravel控制器中如何使用它相关的知识,希望对你有一定的参考价值。
所以,我有2个表,舞台和事件。舞台上有很多事件,而事件属于舞台。我想将所有阶段及其事件显示为json。这是我在控制器中的代码:
public function getschedule(){
$schedule = Stage::all();
//$event = Event_schedule2020::all();
if (!$schedule) {
return response()->json(['msg'=>'Error not found','code'=>'404']);
}
foreach($schedule->events as $array){
$datax[] = [
'id'=>$array->id,
'time'=>$array->time,
'category'=>$array->category,
'type'=>$array->title,
'designer'=>$array->designer,
];
}
foreach ($schedule as $item) {
$jadwal[] = [
'id'=>$item->id,
'date'=>$item->date,
'place'=>$item->stage,
'data'=>$datax,
];
}
return response()->json($jadwal);
}
但我总是会收到此错误
所以,对此我有什么办法吗?
答案
您可以利用内置函数来完成您想做的事情。 Laravel自动将模型转换为JSON
,无需使用它来构建数组。
public function getschedule() {
// tell laravel you want to eager load events
$stages = Stage::with('events')->get();
// laravel knows you loaded events and therefor you can just return it and it does the rest automatically
return $stages
}
另一答案
在您的[[Stage模型中,您必须创建这样的关系
public function events()
{
return $this->hasMany('AppEvent');
}
然后在您的中Controller
public function getschedule(){
$schedules = Stage::with('events')->get()->toArray();
return response()->json($schedules );
}
以上是关于表关系以及在laravel控制器中如何使用它的主要内容,如果未能解决你的问题,请参考以下文章