CakePHPでデータを更新する処理について質問です | Unity Forum | Tech Stadium Forum

CakePHPでデータを更新する処理に...
 
通知
すべてクリア

CakePHPでデータを更新する処理について質問です  

  RSS

Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
31/08/2020 8:41 pm  
CakePHPでデータを更新する処理について質問です。
  1. 指定したNameのレコードが存在する場合、該当レコードのWinsを加算して格納
  2. 存在しない場合、新規レコードを作成し登録
上記の処理のうち1が上手くいかず、Winsが加算されない状態です。
解決方法をご教授いただけますと幸いです。
 
自身では下記を試しております。
・Unity、ARCから実行するもともに2のみ成功。

引用
Teacher
(@admin)
メンバー Admin
結合: 5年前
投稿: 1318
31/08/2020 8:43 pm  

エラー文を見てみると、Winsカラムを+1する前にtoArray()で配列に置き換えてしまっている点が原因かと思われます。
また、受け取った$nameで更新対象のレコードを指定する部分も不足しているように思えます。
下記VoteSystemでPopulalityを+1している部分の実装を参考に、該当レコードの取得、更新、保存処理を行ってみてください。
テーブルを取得する部分はできていると思います。

 

//Postデータの取得
$postData = $this->request->getData('id');

//レコードの更新
$voteSystemTable = $this->getTableLocator()->get('votesystem'); //votesystemテーブルの取得
$tarrgetRecord = $voteSystemTable->get($postData); //votesystemテーブルから該当IDのレコードを取得
$tarrgetRecord->Popularity = $tarrgetRecord['Popularity'] + 1; //レコードのPopularityを更新
$voteSystemTable->save($tarrgetRecord); //更新したレコードの保存
This post was modified 4年前 2回 by Teacher

返信引用
Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
31/08/2020 8:46 pm  
有難うございます。
VoteSystemを参考にさせていただきました。下記質問です。

また、受け取った$nameで更新対象のレコードを指定する部分も不足しているように思えます。

写真の記述で更新対象のレコードのみを取得している認識でしたが、認識の誤り、若しくは記述に誤りがあるということでしょうか?
今回の場合、主キーでの検索でないためgetが使えない状況となっております。

返信引用
Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
31/08/2020 8:47 pm  

データベースの件ですが写真の記述で解決致しました。
原因と解決方法を下記します。

・クエリの実行をtoArrayで行っていた。
 →firstメソッドでクエリを実行に変更。
・toArrayで取得した配列に対して加算処理をしようとしていた(Entityクラスで取得していると思っていた)。
 →firstメソッドによりEntityクラスで取得したため解決。 https://teratail.com/questions/43582

 


返信引用
共有:
タイトルとURLをコピーしました