2016-12-09 17 views
1

私は、データベースに保存しようとしているが、私は常にこのエラーに未定義のメソッドはstdClassにコール::セーブ()

コール::セーブ()

私のコントローラ

を取得
$c = DB::table('subject_user')->where('user_id', $value)->first(); 

$c->auth_teacher = '1'; 

$c->save(); 
+0

subject_userテーブル用に作成されたモデルがありますか? DB :: tableメソッドは、saveメソッドを持つオブジェクトを返しません。 – MMMTroy

+0

いいえピボットテーブルだけなので、私は直接それに行くよ – OunknownO

+0

あなたがユニークなシナリオを持っていない限り、私はモデルを使ってこれを試してみたいと思います。あなたはあなたの多対多関係のピボット値を持っているようです。次のスタックスレッドはまったく役に立ちますか? http://stackoverflow.com/a/21942374/3750476。あなたのコードは次のようになります。 $ user-> subjects() - > updateExistingPivot($ subject-> id、array( 'auth_teacher' => 1)、false); – MMMTroy

答えて

4

は私がwhere条件でsave方法を試していない

このアプローチを試してみてください。うまくいけば、このアプローチはあなたの問題を解決するかもしれません。

DB::table('subject_user')->where('user_id', $value)->update(['auth_teacher' => 1]); 
0

DB :: table( 'subject_user') - >( 'user_id'、$ value) - > update(['auth_teacher' => 1);

私はこれで成功することができました。

2

私はちょうど同じ問題に遭遇したと本物のLaravelの答えを考え出しました。

あなたがここで受け入れた答え(https://stackoverflow.com/a/41051946/470749)は、真のララベルの方法に従いません。

$flights = App\Flight::where('active', 1) 
      ->orderBy('name', 'desc') 
      ->take(10) 
      ->get(); 

があります:私はhttps://laravel.com/docs/5.4/eloquent#retrieving-modelsでドキュメントを再読み込み

は、私が->save()は私、取得方法は、対象物(s)は、このようなモデルを経てた場合にのみ動作することに気づきましたDB::table()をどこにでも使用する必要はなく、推奨する方法ではありません。

DB::table('subject_user')->whereApp\Subject_user::where(またはあなたにとって適切なもの)に変更することができます。

+2

これはより適切な答えです。 – Conan

+0

Eloquentモデルで悲観的なロックを使用することはできないようです。競合状態を防ぐ必要がある場合は、DB :: table()が必須です。 – patrickdamery