php - Laravel 非静态方法问题

标签 php model laravel non-static

有以下模型:

新闻.php

class News extends Aware {

    public static $table = 'noticia';
    public static $key = 'idnoticia';
    public static $timestamps = false;

    public static $rules = array(
        'titulo' => 'required',
        'subtitulo' => 'required',
    );

    public function images()
    {
        return $this->has_many('Image');
    }
}

image.php

class Image extends Aware {

    public static $timestamps = true;

    public static $rules = array(
        'unique_name' => 'required',
        'original_name' => 'required',
        'location' => 'required',
        'news_id' => 'required',
    );

    public function news()
    {
        return $this->belongs_to('News');
    }

}

然后在 Controller 中执行以下操作:

$image = new Image(array(
    'unique_name' => $fileName,
    'original_name' => $file['file']['name'],
    'location' => $directory.$fileName,
    'news_id' => $news_id,
));
News::images()->insert($image);

我不断收到以下错误消息:

Non-static method News::images() should not be called statically, assuming $this from incompatible context

知道我做错了什么吗?

似乎不需要设置public static function images(),因为刷新后我收到一条错误消息

$this when not in object context

Gordon 说通过执行 News::images()->insert($image); 我正在执行静态调用,但这就是 saw 的做法

最佳答案

您缺少一些步骤。

图像属于新闻,但您没有引用要更新的新闻帖子。
你可能想这样做:

$image = new Image(array(...));
$news = News::find($news_id);
$news->images()->insert($image);

更多内容在 docs .

关于php - Laravel 非静态方法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14126651/

相关文章:

PHP 游戏 session 不工作

Play Framework 的日期和时间?

mysql - laravel 查询构建器(GROUP CONCAT)错误

ruby-on-rails - 生产模式下的 Rails 3.1 将模型保存到数据库但返回 id 零

java - 将项目中的单个包发布为 Maven Artifact

php - 如何在 Laravel 中更改重置密码电子邮件主题?

laravel - 传递给 App\Mail\SurveyMail::__construct() 的参数 1 必须是 App\Mail\User 的一个实例,数组给出

php - 获取多列,同时减少 SQL 负载

php - 在 LOAD DATA LOCAL INFILE 中收到错误消息

php - Typo3 +TV 不渲染内容元素