首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 4-模型未被保存

Laravel 4-模型未被保存
EN

Stack Overflow用户
提问于 2014-04-04 02:08:23
回答 1查看 1.6K关注 0票数 4

具有以下代码:

代码语言:javascript
复制
class SearchIndex extends Eloquent {

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'searchindex';

    //no timestamps
    public $timestamps = false;

    //mass-assignment
    public $fillable = array('url', 'content', 'version', 'digest');
    public $guarded = array();

    public static function updateIndex($url, $version, $content)
    {
        self::retrieveSearchEntry($url, $version)->updateContent($content)->save();
    }

    public static function retrieveSearchEntry($url, $version)
    {
        try
        {
            return self::withoutContent()->where('url', $url)->where('version', $version)->firstOrFail(array('url', 'version', 'digest'));
        }
        catch(\Illuminate\Database\Eloquent\ModelNotFoundException $e)
        {
            return new SearchIndex(array('url' => $url, 'version' => $version));
        }
    }

    public function updateContent($content)
    {
        $hash = md5($content);
        if (!isset($this->digest) || ($this->digest != $hash))
        {
            $this->content = $content;
            $this->digest = $hash;
        }
        return $this;
    }

    public static function search($content)
    {

    }
}

如果我调用updateIndex提供url+version的新组合,就会创建一个条目。

如果我调用updateIndex提供现有的一对url+version,则不会使用新的内容更新条目。我发现这与我忽略了“content”字段有关(原因:是巨大的,我想在这个函数中设置它,而不是获取它)。

问题:我怎么能-得到内容字段,但能够在保存时设置它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-04 02:42:58

解决了。原因:在firstOrFail()中进行自定义选择时,我没有选择"id“字段。这样,id为null,生成的SQL试图更新(因为它是一个存在的对象)“其中id为空”,这将影响0行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22852261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档