我正在开发一个页面来创建,更新,删除和查看更新事件时出错的事件。有一个事件表和一个event_collection表。在该event_collection表中,有event_id,它是一个事件的id,另一个是来自其他表集合的collection_id。
当我创建一个事件时,除了集合之外,所有数据都存储在事件表中。在集合表中数据以一个一个的方式存储,就像我检查集合中的2个项目一样,它将生成2个具有相同event_id和2个collection_id的ID。
更新中存在问题,当我尝试更新代码时,它会给出错误
Macroable.php第81行中的BadMethodCallException: 方法更新不存在。
更新方法是:
public function update(EventRequest $request, $id)
{
$event = Event::findOrFail($id);
$input = $request->all();
$input['days_of_week'] = serialize(Input::get('days_of_week'));
$query = $event->update($input);
$checkbox_selection = Input::get('agree');
$choosen_checkbox = $id;
$collection_event = EventCollection::where('event_id',$choosen_checkbox)->get();
// return $collection_event;
if (!is_null($checkbox_selection)) {
foreach ($checkbox_selection as $collection) {
// $collection_id = $id;
foreach($collection_event as $k){
// return $k;
if($k->event_id == $choosen_checkbox){
$data = $request->all();
$data['event_id']= $choosen_checkbox;
$data['collection_id'] = $collection;
$collection_event->update($data);
}
}
}
}
我的商店方法是:
public function store(Request $request)
{
$checkbox = Input::get('days_of_week');
$checkbox_selection = Input::get('agree');
// return $checkbox_collection;
$input = $request->all();
$input['days_of_week'] = serialize($checkbox);
$query = Event::create($input);
$event_id = $query->id;
$pro_id = $query->provider_org_id;
/*For the checkbox selection, if they are multiple store each separately*/
if (!is_null($checkbox_selection)) {
foreach ($checkbox_selection as $collection) {
$collection_id = $query->id;
if($collection_id){
$data = $request->all();
$data['event_id']= $collection_id;
$data['collection_id'] = $collection;
$create_collection = EventCollection::create($data);
}
}
}
return view('event.pic_upload',compact('event_id','pro_id'));
}
商店方法正常运作!有人可以告诉任何解决方案吗?我很不满意。
答案 0 :(得分:0)
我不认为'更新'方法适用于集合。 该行将返回一个集合
$collection_event = EventCollection::where('event_id',$choosen_checkbox)->get();
您不需要集合,而是查询。正如文档中所给出的那样:
`App\Flight::where('active', 1)
->where('destination', 'San Diego')
->update(['delayed' => 1]);`
尝试删除' - > get()'来自声明。