提问者:小点点

非静态方法不应该静态调用,假设$this来自不兼容的上下文 -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个答案

匿名用户

< code>survey()是一个绝对不是静态的关系方法,我真的不知道您想要完成什么,但是您有两个选择,您可以直接从< code>Survey模型中获得您想要的调查,如下所示:

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

或者在< code >场馆模型的实例上这样做:

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

当然,在第二种情况下,它将通过属于特定地点的调查进行搜索。

匿名用户

如果你想得到场地的调查结果,那么你应该这样做。。。

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