php - 未找到列 : 1054 Unknown column '0' in 'field list' - Laravel - I don't have a 0 column anywhere in my code

标签 php mysql laravel laravel-5

我遇到了这个奇怪的错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'field list' (SQL: update forum_threads set 0 = locked, 1 = 1, updated_at = 2016-03-17 16:01:59 where topic_id = 3 and forum_threads.deleted_at is null)

问题是,我没有 0 列。我的代码中的任何位置都没有带有 0 的 where 子句。我正在使用范围查询。

我的 Controller 是:

    $action = $request->input('action');
    $topic = $request->input('topic');
    $thread = Thread::where('topic_id', $topic);

    switch ($action) {
        case ('locked'):
            $thread->lock();
            break;
    }

如你所见,我做的不多。我只是想锁定一个线程。我在我的 Thread 模型中调用锁定范围。我有很多 switch case,其中之一是 lock。我已经在顶部运行了一半的查询,所以我不必重复自己。我只是将它存储在 $thread 变量中,这样我就可以执行 $thread->delete()$thread->restore().

我在线程模型中的查询范围:

public function scopeLock($query)
{
    return $query->where('locked', 0)->update(['locked', 1]);
}

就是这样。我认为这可能是因为我有一个 where 子句从我的 Controller (Thread::where('topic_id', $topic)) 传递,我只是在我的范围内继续它。

非常感谢任何帮助。

最佳答案

错误是由于 ->update(['locked', 1]); 应该是 ->update(['locked' => 1]);

更新函数使用数组作为“列”=>“值”,你的语法错误导致 Laravel 认为 [ 0 => 'locked', 1 => 1],所以它翻译对此 SQL SET 0 = 'locked', 1 = 1...

关于php - 未找到列 : 1054 Unknown column '0' in 'field list' - Laravel - I don't have a 0 column anywhere in my code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36065951/

相关文章:

php - 如何划分存储在 phpmyadmin 数据库中的字符串并以任意顺序从该字符串中搜索单词?

Laravel 在 2019 年 10 月之后与 Instagram API 集成

php - 您的要求无法解析为一组可安装的软件包。 - Laravel Lumen 邮件

php - 为什么变量没有传递给查询?

php - Code Igniter Form - PHP 变量中的 Javascript。不适合胆小的人

mysql - 插入mysql数据库的小时数

mysql - mysql中的条件计数

MySql 和创建外键

php - updateOrCreate 与 Carbon 日期不匹配

javascript - 获取 PHP 变量的 slider 值