Macroable.php第81行中的BadMethodCallException:方法更新不存在

时间:2016-03-10 11:18:40

标签: php laravel laravel-5.1

我正在开发一个页面来创建,更新,删除和查看更新事件时出错的事件。有一个事件表和一个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'));
    }

商店方法正常运作!有人可以告诉任何解决方案吗?我很不满意。

1 个答案:

答案 0 :(得分:0)

我不认为'更新'方法适用于集合。 该行将返回一个集合

$collection_event = EventCollection::where('event_id',$choosen_checkbox)->get();

您不需要集合,而是查询。正如文档中所给出的那样:

`App\Flight::where('active', 1)
      ->where('destination', 'San Diego')
      ->update(['delayed' => 1]);`

尝试删除' - > get()'来自声明。