当前位置: 首页 > 知识库问答 >
问题:

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

戈念
2023-03-14

嗨,我有以下型号。

场馆模型

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个答案

盖和洽
2023-03-14

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

$surveys = Venue::find($id)->venues()->orderBy('id', 'DESC')->first()
程和蔼
2023-03-14

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

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

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

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

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

 类似资料:
  • 我正在使用Offiria(基于joomla的社交网络脚本),当我单击链接“显示所有评论”以查看链接下所有已发布的评论时,我在第一条评论上方收到以下错误。该功能可以工作,因此所有评论都会扩展,我可以看到所有评论,但错误也在那里。 严格标准:非静态方法StreamComment::getCommentsHTML()不应该被静态调用,假设$this来自第31行的C:\节目文件\放大器\www\offir

  • 我正在使用存储库模式并尝试建立模型之间的关系。当我尝试运行存储()方法(在控制器中),该方法试图使用用户()方法(与方模型建立关系)时,我收到以下错误消息: 非静态方法不应该静态调用::user(),假设$this来自不兼容的上下文 我不明白为什么在尝试运行user()relationship方法时会出现此错误,但所有其他方法(包括$this- 以下是相关代码:

  • 我最近对 PHP 5.4 进行了更新,但收到有关静态和非静态代码的错误。 这是错误: 这是第371行: 我希望有人能帮忙。

  • 我有一个简单的模式,有一个索引方法从数据库中获取数据 模态:国家 现在我想从控制器调用这个函数: 控制器: 为此,我以这种方式创建了一个正面: 创建了一个提供者 在config/app.php中注册了提供程序 创建了门面 在config/app.php中注册别名 第1步-提供商: php artisan make:提供者NationServiceProvider 第2步:在config/app.p

  • 我一直试图用我的验证代码进行php pear验证,但我收到的都是严格标准错误--问题是什么?我如何修复它? 电子邮件验证.php

  • PHP严格标准:不应在第33行的/web/sites/blah/somescript.PHP中静态调用非静态方法pear::iserror() 我在MDB2上看到了类似的错误。稍后再详细介绍。 somescript.php: 问题 是否有不同的方法来调用而不会产生错误?