函数cancel()return调用Laravel中未定义的方法

时间:2018-11-04 21:04:09

标签: php laravel

当我尝试使用forget()方法从集合中删除一个项目时出现错误:

  

调用未定义的方法   照亮\数据库\口才\关系\ HasManyThrough :: forget()

我的模特City.php

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;

class City extends Model
{
    public function rooms(){
      return $this->hasManyThrough('App\Room','App\Object');
    }
}

我的方法包含forget()

public function getSearchResults($request){
    $request->flash();
    if($request->input('city')!=null){
      $result = $this->fR->getSearchResults($request->input('city'));
      if($result){

        foreach($result->rooms as $k=>$room)
        {
          if($request->input('room_size') > 0)
          {
            if($request->input('room_size') != $room->room_size)
            {
              $result->rooms()->forget($k);
            }
          }
        }

        return $result;
      }
    }
    return false;
  }

该如何解决? 感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您应在清除缓存后,通过以下方式更改代码。

public function getSearchResults($request){
    $request->flash();
    if($request->input('city')!=null){
      $result = $this->fR->getSearchResults($request->input('city'));
      if($result){

        foreach($result->rooms as $k=>$room)
        {
          if($request->input('room_size') > 0)
          {
            if($request->input('room_size') != $room->room_size)
            {
              $result->rooms->forget($k);
            }
          }
        }

        return $result;
      }
    }
    return false;
  }

然后在命令下运行

php artisan cache:clear
Artisan::call('cache:clear');