Laravel Eloquent 保存项目

Posted

技术标签:

【中文标题】Laravel Eloquent 保存项目【英文标题】:Laravel Eloquent Save Item 【发布时间】:2014-09-05 11:59:05 【问题描述】:

当我尝试在 Laravel 中保存项目时,它会显示以下内容。

调用未定义的方法 Illuminate\Database\Query\Builder::save()

我已按照文档进行操作,我可以很好地删除项目,只是不更新​​。我的代码有什么问题吗?

 public function publishedMain($id, $state)


    $userId = Auth::user()->id;
    $userAdmin = Auth::user()->admin;


    if($userAdmin == "0")
        $clients = Clients::whereRaw('id = ? and parent = ?', array($id, $state));
        $clients->active = $state;
        $clients->save();
        die('not admin');
    else
        $clients = Clients::whereRaw('id = ?', array($id));
        $clients->active = $state;
        $clients->save();
        die('admin');
    

非常感谢 布伦特

【问题讨论】:

【参考方案1】:

您在查询构建器上调用save() 方法,而不是在您的模型上。

你错过了->first() 部分:

$clients = Clients::whereRaw('id = ? and parent = ?', array($id, $state))->first();

当然,这将获得第一个客户端,因此将变量命名为 $clients 没有多大意义。

您还应检查您的$clients 变量是否不为空,在这种情况下,它没有找到任何东西。

(顺便说一句,你的模型应该叫Client,而不是Clients

【讨论】:

感谢您的回答,但我仍然不明白我的意思是如何更新该项目?我只想更改一个值?我可以获取数据,在我的控制器内全部删除,但不能更新? whereRaw() 只是添加一个条件,它不获取任何内容。 我已经添加了我的get,但是当我保存它时仍然显示 调用未定义的方法 Illuminate\Database\Eloquent\Collection::save() 请记住,这只会更新第一个返回的结果。如果您有一堆需要更新的客户端,则需要遍历它们并随时保存。

以上是关于Laravel Eloquent 保存项目的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 不使用 Eloquent 更新项目

如何在 laravel eloquent 中保存布尔值

带有 Eloquent 的 Laravel 不会在数据库中保存模型属性

在 Laravel Eloquent 中通过 ID 保存一对多

Laravel Eloquent:在单个数据库事务中保存模型和关系

Laravel Eloquent $model->save() 不保存但没有错误