2016-03-17 5 views
5

のどこに0の列を持っていない:コラム:1054不明な列「0」「フィールドリスト」で - Laravel - 私はこの奇妙なエラーを取得しています私のコード

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節を私のコードのどこにも持っていません。スコープクエリを使用しています。

私のコントローラは、次のとおりです。

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

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

あなたが見ることができるように、私はあまりをしません。私はスレッドをロックしようとしています。 Threadモデルのロックスコープを呼び出しています。私は多くのスイッチケースを持っており、そのうちの1つはlockです。私はトップでクエリの半分を実行したので、自分自身を繰り返す必要はありません。私は単に変数$threadにそれを保存して、$thread->delete()$thread->restore()のようなアクションを実行できるようにしました。

スレッドモデルでの私の質問スコープ:

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

それです。私は私のコントローラ(Thread::where('topic_id', $topic))から渡すWhere句を持っているので、私はそれが私の範囲にそれを続けていると思う。

ご協力いただきまして誠にありがとうございます。

+1

'$ thread = Thread :: where( 'topic_id'、$ topic) - > first();'このクエリを完了して試してみますか? –

+1

また、 ' - > update(['locked' => 1]); ' –

+0

まだ同じエラーが発生しています。そして私は多くのスレッドを持っています。私はそれがうまくいかないように編集しているだけではありません。 –

答えて

16

エラーが->update(['locked' => 1]);

更新機能は、「列」=>「値」として配列を使用することは、このSQL SET 0 = 'locked', 1 = 1に変換して、あなたの構文エラーが、Laravelは[ 0 => 'locked', 1 => 1]を考えるようになりあるべきによる->update(['locked', 1]);にあります...私はコメント欄で述べたように、これにあなたの機能を変更する

+0

母は答えを投稿するために戻ってくる前にそれを理解しました。あなたは最初に答えたので、私はあなたの答えを受け入れるでしょう。ありがとうございました! –

+0

@TaylorSwift私はコメント欄でこれに答えました。 :/ –

+0

@JilsonThomas私はあなたの2番目のコメントが私が作ったエラーを指摘していることに気がつきました。私は私の更新メソッドでエラーが発生したことを知らなかった。私はあなたの答えをupvoted –

1

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

は、更新方法の変化に注意してください。

関連する問題