【发布时间】:2016-07-04 02:52:38
【问题描述】:
我收到了这个奇怪的错误:
SQLSTATE[42S22]:未找到列:1054“字段列表”中的未知列“0”(SQL:更新
forum_threads设置0= 锁定,1= 1,updated_at= 2016-03 -17 16:01:59 其中topic_id= 3 和forum_threads.deleted_at为空)
问题是,我没有 0 列。我的代码中没有带有0 的where 子句。我正在使用范围查询。
我的控制器是:
$action = $request->input('action');
$topic = $request->input('topic');
$thread = Thread::where('topic_id', $topic);
switch ($action) {
case ('locked'):
$thread->lock();
break;
}
如你所见,我做的不多。我只是想锁定一个线程。我在我的Thread 模型中调用锁定范围。我有很多开关盒,其中一个是lock。我已经在顶部运行了一半的查询,所以我不必重复自己。我只是将它存储在$thread 变量中,这样我就可以执行$thread->delete() 和$thread->restore() 之类的操作。
我在 Thread 模型中的查询范围:
public function scopeLock($query)
{
return $query->where('locked', 0)->update(['locked', 1]);
}
就是这样。我认为这可能是因为我的控制器 (Thread::where('topic_id', $topic)) 传递了一个 where 子句,而我只是将其继续到我的范围内。
非常感谢任何帮助。
【问题讨论】:
-
$thread = Thread::where('topic_id', $topic)->first();完成此查询并尝试? -
另外,
->update(['locked' => 1]); -
仍然遇到同样的错误。而且我有很多线程,而不仅仅是我要编辑的一个,这样就不会工作了。
标签: php mysql laravel laravel-5