2016-10-15 22 views
0

生のSQLクエリを実行し、UPDATE操作で止まる方法を学習しています。Laravel DB :: updateは何のエラーもなく何もしません。

私はINSERTのためのルートがあります。SELECT用

Route::get('/insert', function(){ 
    DB::insert('insert into posts (title, content) values (?, ?)', ['PHP with Laravel', 'Just testing']); 
    return 'after insert'; 
}); 

とルート:

/home/pavel/www_mysite/TestLaravel/routes/web.php:31: 
array (size=1) 
0 => 
    object(stdClass)[239] 
     public 'id' => int 11 
     public 'title' => string 'PHP with Laravel' (length=16) 
     public 'content' => string 'Just testing' (length=12) 
     public 'created_at' => null 
     public 'updated_at' => null 
     public 'is_admin' => int 0 

と、少なくともUPDATEクエリ::私は見SELECTクエリの後

Route::get('/read', function(){ 
    $results = DB::select('select * from posts'); 
    return var_dump($results); 
}); 

Route::get('/update', function(){ 
    DB::update('update posts set title = "Nothing here"'); 
}); 

このクエリの後、新しいSELECTクエリは同じデータを表示し、PHPPgAdminでは変更が見つかりませんでした。私はLaravelDebugBarをインストールし、INSERTおよびSELECTクエリのページでブラウザの一番下に表示されますが、UPDATEクエリのページでは表示されません。私は間違いがどこにあるのか分からない。

+0

エスケープされた一重引用符を使用して二重引用符を変更した後で、次のように動作します。 ルート:get( '/ update'、function(){ DB :: update( '更新記事セットタイトル= \' \ ''); }); しかし、なぜ二重引用符ではクエリが機能しないのですか? – brunen9

+0

私はMySQLをインストールして同じクエリを試してみて、うまく動作します。 MySQLデータベースへのINSERTは二重引用符で動作します。 – brunen9

答えて

0

私は、PostrgreSQLがテーブルとカラムの大文字と小文字を区別した名前を保存するかもしれないことを研究しました。その場合は、クエリで二重引用符で名前を指定する必要があります。 PostrgreSQLがクエリで二重引用符を見つけたとき、それがテーブル/カラム名であると "考える"と思う。しかし、その名前の列はありません。

0

where句を使用しようとします。 例:

$affected = DB::update('update users set votes = 100 where name = ?', ['John']); 
+0

しかし、 "どこで"レコードをフィルタリングするだけで問題を取り除くことはできません。質問自体のコメントで私の更新を見てください。あなたはそれを考えていますか? – brunen9

0

私はあまりにもあなたのコードをテストし、それは私が私のローカル環境(laravel 5.2は、MySQL 5.1)上の更新コードを実行 see this picture

0

を働きます。それはOKに更新されました。

ログはありますか?

関連する問題