2017-11-05 17 views
0

データベース内の更新モデルを試します。 私はnaw値と値でリクエストしています。モデル内のレコードを更新する

'old_log - データベースの行を見つけるための古い値。

public function UserChange2(Request $request){ 
     dump($request); 
     $data=$request->all(); 
     $log = $request->input('old_log'); 
    dump($log); 
$user=userModel::select(['fam','im','ot','phone','log','pass'])->where('log',$log)->first(); 
    $temp=$request->input('fam'); 
    $user->fam=$temp; 
    $temp=$request->input('im'); 
    $user->im=$temp; 
    $temp=$request->input('ot'); 
    $user->ot=$temp; 
    $temp=$request->input('phone'); 
    $user->phone=$temp; 
    $temp=$request->input('log2'); 
    $user->log=$temp; 
    $temp=$request->input('pass'); 
    $user->pass=$temp; 
    dump($user); 
    $user->save; 
} 

ただし、テーブルのレコードは更新されません。

モデル:今すぐ

class userModel extends Model 
{ 
    public $timestamps = false; 
    protected $fillable=['fam','im','ot','phone','log','pass','reg','token','date','position']; 

} 

dump($request); 
     $data=$request->all(); 
     $log = $request->input('old_log'); 
    dump($log); 
    $user=userModel::select(['fam','im','ot','phone','log','pass'])->where('log',$log)->first(); 
      $user->fill($request->all())->save(); 
     $user->save; 

とエラー:

Column not found: 1054 Unknown column 'id' in 'where clause' (SQL: update user_models set fam = y, phone = gggg, pass = tttyyyyyyyy where id is null)

+0

あなたのモデルに$ fillableはありますか? また、すべての代入の代わりに '$ user-> fill($ request-> all()) - > save()'を実行することができます。 –

+0

'public $ timestamps = false; 保護された$ fillable = ['fam'、 'im'、 'ot'、 'phone'、 'log'、 'pass'、 'reg'、 'token'、 'date'、 'position']; ' – randomUser

答えて

0

あなたはおそらく、あなたのモデルに完成fillablesを持っていません。

例:空白にして完了することができるフィールドを追加する必要がモデルに ゴー

protected $fillable = [ 
    'phone', 'log2', 'pass',  
]; 

あなたはここでLaravelマニュアルでこれを見つけることができます: https://laravel.com/docs/5.5/eloquent#mass-assignment

+0

アップデートを参照してください。 – randomUser

0

は、から選択を削除あなたの雄弁。

$user=userModel::where('log',$log)->first(); 
$request->request->add(['log' => $request->log2]); 
$user::create($request->all()); 
+0

$ request-> all()はできません。私の要求では、データベース内のオブジェクトを見つけるために古いvalurのログインがあります。 – randomUser

+0

編集を参照してください。私は要求の古い値を置き換えます。 – ZeroOne

1

あなたuserModelが雄弁モデルであるModelを、拡張

$user=userModel::where('log',$log)->first(); 
$user::create($request->all()); 

編集。これを試してみて、デフォルトでは、関連テーブルがidと呼ばれる主キーを持っていることを期待しています。

エラーが

Column not found: 1054 Unknown column 'id' in 'where clause'

カラムidが存在しないことを示しています。

テーブル定義を確認してください。これはLaravelプロジェクトの外で作成されたDB内のテーブルですか?

プライマリキーidが定義されているかどうかデータベースの移行を確認してください。データベースの移行については、hereをお読みください。

あなたはidの代わりに使用することを主キーがすでに存在する場合、あなたは雄弁に伝えることができます:

protected $primaryKey = 'your_primary_key'; 

hereを参照してください。

関連する問題