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 保存项目的主要内容,如果未能解决你的问题,请参考以下文章
带有 Eloquent 的 Laravel 不会在数据库中保存模型属性
在 Laravel Eloquent 中通过 ID 保存一对多