【问题标题】:Laravel Eloquent Save ItemLaravel Eloquent 保存项目
【发布时间】: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');
    }
}

非常感谢 布伦特

【问题讨论】:

    标签: php laravel eloquent


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 感谢您的回答,但我仍然不明白我的意思是如何更新该项目?我只想更改一个值?我可以获取数据,在我的控制器内全部删除,但不能更新?
    • whereRaw() 只是添加一个条件,它不获取任何内容。
    • 我已经添加了我的get,但是当我保存它时仍然显示
    • 调用未定义的方法 Illuminate\Database\Eloquent\Collection::save()
    • 请记住,这只会更新第一个返回的结果。如果您有一堆需要更新的客户端,则需要遍历它们并随时保存。
    猜你喜欢
    • 2020-12-02
    • 1970-01-01
    • 2015-03-21
    • 2014-10-25
    • 1970-01-01
    • 2017-03-31
    • 2013-12-09
    • 2017-12-13
    • 2021-02-02
    相关资源
    最近更新 更多