为什么setRelation()在Laravel 5.7中无法正常工作?

时间:2019-06-03 19:06:49

标签: php laravel eloquent

所以我有以下代码:

if (!$this->relationLoaded('feed')) {
    $this->getFeed();
}

然后在getFeed()方法中,我具有以下内容:

public function getFeed() {
    $feed = Cache::get(RSSFeed::CACHE_KEY . $this->id_RSSFeed, function() {
        $feed = $this->feed;

        Cache::put(RSSFeed::CACHE_KEY . $this->id_RSSFeed, $feed, now()->addHours(24));

        return $feed;
    });

    // not empty
    echo "<pre>";
    print_r($feed);

    $this->setRelation('feed', $feed);

    // empty
    print_r($this->feed);
    exit;

    return $this->feed;
}

我还具有如下定义的feed()关系:

public function feed() {
    return $this->belongsTo("App\RSSFeed", "id_RSSFeed");
}

现在由于某种原因,当我在print_r()上设置关系后尝试在$this->feed上进行$this时,它返回null或为空。我在这里做错了什么?我使用了错误的方法吗?你们能提供的任何帮助将不胜感激。

编辑:我忘了在班级顶部我有以下内容:

class RSSFeed extends Model {
    public $feed;
}

因此,这覆盖了该关系。我会尽快添加答案,以防其他人搞砸。

1 个答案:

答案 0 :(得分:0)

在问题中的编辑中发布,这是罪魁祸首:

class RSSFeed extends Model {
    public $feed;
}

从那里删除public $feed;后,它便开始正常工作