不应静态调用非静态方法,假设$ this来自不兼容的上下文-Laravel 5.2

时间:2016-05-24 14:15:55

标签: php laravel laravel-5.2

您好我有以下型号。

场地模型

namespace App;

use Illuminate\Database\Eloquent\Model;

class Venues extends Model
{
    public $timestamps = false;
    /**
     * The database table used by the model.
     ** @var string
     */

    protected $table = 'locations';

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = ['name', 'country','city','client_id'];


    public function survey(){
        return $this->belongsToMany('App\Survey', 'location_to_survey','location_id', 'survey_id')->withPivot('is_review');
    }

}

调查模型

namespace App;

use Illuminate\Database\Eloquent\Model;

class Survey extends Model
{
    //
    public function venues(){
        return $this->belongsToMany('App\Venues', 'location_to_survey','location_id', 'survey_id')->withPivot('is_review');
    }
}

当我试图获取场地调查时,我遇到了错误。

 $survey = Venues::survey()->where('id','=', $id)->orderBy('surveys.id','DESC' )->first();
  

不应该调用非静态方法App \ Venues :: survey()   静态地,假设来自不兼容的上下文的$ this

我在Laravel 5.1中创建了与此类似的模型和关系,但没有出现此问题。我想知道我是否在Laravel 5.2中遗漏了一些东西。

2 个答案:

答案 0 :(得分:2)

survey()是一种绝对不是静态的关系方法,我不知道你想要完成什么,但是你有两个选项,你要么直接从{{得到你想要的调查。 1}}模型如此:

Survey

或者你在Survey::where('id','=', $id)->orderBy('surveys.id','DESC' )->first(); 模型的实例上这样做:

Venues

在第二种情况下,它当然会搜索属于该特定地点的调查。

答案 1 :(得分:0)

如果您正在尝试进行场地调查,那么您应该做这样的事情......

$surveys = Venue::find($id)->venues()->orderBy('id', 'DESC')->first()