【问题标题】:Column not found: 1054 Unknown column '0' in 'field list' - Laravel - I don't have a 0 column anywhere in my code找不到列:1054“字段列表”中的未知列“0”-Laravel-我的代码中的任何地方都没有0列
【发布时间】: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


【解决方案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变量中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-25
        • 2017-03-29
        • 1970-01-01
        • 2021-01-03
        • 1970-01-01
        • 2017-08-09
        • 2015-01-19
        • 1970-01-01
        相关资源
        最近更新 更多