質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

676閲覧

データの更新機能を実装したいです。

taka3344

総合スコア8

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/06/03 06:12

編集2021/06/03 16:41

前提・実現したいこと

保存したデータの更新機能を作成したいです。

発生している問題・エラーメッセージ

データを

$question1 = Question::where('id', $questionId)->get();

で取得し、saveアクションをした時に以下のエラーが出ます。

Call to a member function save() on string

$question1の内容を確認したところ、

{"id":5,"question":"\u3053\u3053\u306b\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044","created_at":"2021-05-31 01:06:42","updated_at":"2021-05-31 01:06:42"}

questionの部分がASCII文字に置き換わっていました。
これはデフォルトなのでしょうか。

該当のソースコード

controller

public function edit(Request $request) { $answers = $request->answer; $answerIds = $request->answerId; $questionId = $request->questionId; $question = $request->question; $question1 = Question::where('id', $questionId)->get(); echo $question1; $question1->question = $question; echo $question1->question; $question->save();

試したこと

参考サイト:https://qiita.com/gomaaa/items/91e5cbd319279a2db6ec

{"id":5,"question":"\u3053\u3053\u306b\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044","created_at":"2021-05-31 01:06:42","updated_at":"2021-05-31 01:06:42"}

こちらのデータですが、echo $question1->question;で出力はうまくできるみたいです。

$question2 = chr($question1);

で、文字列変更しするも変化なしです。
解決策を教えていただきたいです。よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

Laravel 6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/06/03 06:27

dd(変数名) とか駆使して何が入っているのか観察してみては。
taka3344

2021/06/03 06:49

``` "\u3053\u3053\u306b\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044" ``` ここのことでしたら "ここに記入してください"という文字列が出力されました(db内データと同じです。) dd($question1)で表示したところ ``` #attributes: array:4 [▼ "id" => 5 "question" => "ここに記入してください" "created_at" => "2021-05-31 01:06:42" "updated_at" => "2021-05-31 01:06:42" ] ``` と、なりこの表記ではしっかり中身を見ることができました
taka3344

2021/06/03 06:51 編集

#connection: "mysql" #table: "questions" #primaryKey: "id" #keyType: "int" +incrementing: true #with: [] #withCount: [] #perPage: 15 +exists: true +wasRecentlyCreated: false #attributes: array:4 [▼ "id" => 5 "question" => "ここに記入してください" "created_at" => "2021-05-31 01:06:42" "updated_at" => "2021-05-31 01:06:42" ] #original: array:4 [▼ "id" => 5 "question" => "ここに記入してください" "created_at" => "2021-05-31 01:06:42" "updated_at" => "2021-05-31 01:06:42" ] #changes: [] #casts: [] #dates: [] #dateFormat: null #appends: [] #dispatchesEvents: [] #observables: [] #relations: [] #touches: [] +timestamps: true #hidden: [] #visible: [] #fillable: [] #guarded: array:1 [▼ 0 => "*" 全文です
guest

回答2

0

自己解決

$question1 = Question::where('id', $questionId)->get(); echo $question1; $question1->question = $question; echo $question1->question; $question->save();

上記から

$question1 = Question::where('id', $questionId)->first(); echo $question1; $question1->question = $question; echo $question1->question; $question1->save();

に変更することでうまく保存できました。
->get();だと一件でも配列取得になってしまうので保存できなかったみたいです。
エラー文:Method save does not exist.

$question1->save();

変数記述ミスでした。
回答していただきありがとうございました。

投稿2021/06/03 16:46

編集2021/06/03 16:50
taka3344

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

エスケープされているだけなので、もとに戻しましょう。

js

1 var txt = "\u3053\u3053\u306b\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044"; 2 var result = unescape(txt); 3 console.log(result);

投稿2021/06/03 06:32

FKM

総合スコア3647

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taka3344

2021/06/03 06:54

回答ありがとうございます。 LaravelでJavaScriptを使用したことがないので申し訳ないのですが、こちらの記述をコントローラー内に埋め込むという形で良いのでしょうか。 教えていただけると助かります。
FKM

2021/06/03 08:06

PHPはサーバサイドなのでjs埋め込んでもタイミングが合わないので取得できません。なので、事前にjsでイベント発生時に処理して、フォームに埋め込んだ方が確実です
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問