找不到列:1054“字段列表”中的未知列“0”-Laravel-我的代码中的任何地方都没有0列

Posted

技术标签:

【中文标题】找不到列:1054“字段列表”中的未知列“0”-Laravel-我的代码中的任何地方都没有0列【英文标题】:Column not found: 1054 Unknown column '0' in 'field list' - Laravel - I don't have a 0 column anywhere in my code 【发布时间】: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]); 仍然遇到同样的错误。而且我有很多线程,而不仅仅是我要编辑的一个,这样就不会工作了。 【参考方案1】:

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

更新函数使用数组作为"column" => "value",你的语法错误导致Laravel认为[ 0 => 'locked', 1 => 1],所以它转换成这条SQLSET 0 = 'locked', 1 = 1...

【讨论】:

哈哈,我在回来发布答案之前就想通了。你是第一个回答的,所以我会接受你的回答。谢谢! @TaylorSwift 我在评论部分回答了这个问题。 ://【参考方案2】:

正如我在评论部分提到的,把你的函数改成这样:

public function scopeLock($query)

    return $query->where('locked', 0)->update(['locked' => 1]);

注意更新方法的变化。

【讨论】:

【参考方案3】:

我在 WHERE 有双重条件

ContestPool::where(['contest_id', '=', $contest_id], ['user_id', '=', $user_id])->delete();

我修复了为这两种情况添加括号

ContestPool::where([['contest_id', '=', $contest_id], ['user_id', '=', $user_id]])->delete();

【讨论】:

【参考方案4】:

在我的情况下,问题出在模型属性中。我使用受保护的 $fillable、保护 $foreignKey、受保护的 $timestamp。为了解决de问题,我把所有的属性都放在了protect $fillable变量中。

【讨论】:

以上是关于找不到列:1054“字段列表”中的未知列“0”-Laravel-我的代码中的任何地方都没有0列的主要内容,如果未能解决你的问题,请参考以下文章

错误代码:1054。“字段列表”中的未知列“部门”0.000 秒

SQLSTATE [42S22]:找不到列:1054 未知列 '0' where 子句

SQLSTATE [42S22]:找不到列:1054 'where 子句为啥'中的未知列'4'我找不到错误

SQLSTATE [42S22]:找不到列:1054未知列material_tags.material_uuid

#1054 - '字段列表'中的未知列 'id' - phpMyAdmin

MySQL 错误 #1054 -“字段列表”中的未知列