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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vuex

Vuexは、Vue.js アプリケーションのための状態管理ライブラリです。アプリケーション内で使用するコンポーネントのための集中データストアを提供。コンポーネント同士でデータをやり取りし、処理のフローを一貫させたり、データの見通しを良くすることができます。

Laravel

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1913閲覧

[vue Laravel] axiosでpushするデータに、ログインユーザーIDを設定したい

nanami0221

総合スコア18

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vuex

Vuexは、Vue.js アプリケーションのための状態管理ライブラリです。アプリケーション内で使用するコンポーネントのための集中データストアを提供。コンポーネント同士でデータをやり取りし、処理のフローを一貫させたり、データの見通しを良くすることができます。

Laravel

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/01/05 02:53

初歩的な質問で申し訳ございません。
恐らく、とても簡単な内容です。

前提・実現したいこと

Vue.js
Laravel
axios

jsファイルからaxiosでpushするデータに、ログインユーザーIDを設定したいです。
ただ、jsファイルでログインユーザーIDを取得するのは難しそうと判断しました。
そこで、axiosでpushするjsファイルではuser_idを1と設定し、受け取ったcontrollerで、ユーザーIDをAuth::user()->id;と設定することにしました。

やったこと

1.jsファイルで直接取得

参考:https://www.it-swarm-ja.tech/ja/javascript/vuejs%E3%81%A8laravel%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E7%8F%BE%E5%9C%A8%E8%AA%8D%E8%A8%BC%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BCid%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/806941096/

JS

1// jsファイルに直接記述 2$http.get('api/user').then(response => { 3 console.log(response.body); 4}) 5// エラー:[Vue warn]: Error in v-on handler: "ReferenceError: $http is not defined"
2.JSファイルにユーザーIDを設定

JS

1let userId = Auth::user()->id; 2console.log(userId); 3// Unexpected token, expected ";"
3.controllerにsubmitされた配列に直接記述
public function store(ChargeRemarkRequest $request) $params = $request->all(); // ユーザーIDを直接登録する $params['user_id'] = Auth::user()->id; $chargeRemark = new ChargeRemark(); $chargeRemark->fill($request->all())->save(); return response()->json(['id' => $chargeRemark->id]); } // 何も変更なし

わからないこと

1. jsファイルでユーザーIDを取得することはできるのか
2. できない場合、コントローラーで上書きすることはできるのか
3. いずれも正しくない場合、どのようにして取得すれば良いのか

コード

1.axiosでpushするjsファイル

JS

1registerMemo(state, { infoId, content }) { 2 state.calendars[infoId.calendarId][infoId.columnStatus][infoId.lineId].memos[infoId.memberId] = { content: content }; 3 let timeType = 0; 4 switch (infoId.columnStatus) { 5 case 'amcolumns': 6 timeType = 1; 7 break; 8 case 'pmcolumns': 9 timeType = 2; 10 break; 11 case 'yetcolumns': 12 timeType = 0; 13 break; 14 }; 15 let params = { 16 user_id: 1, 17 charge_id: state.managerLists[infoId.memberId].id, 18 time_type: timeType, 19 work_on: state.calendars[infoId.calendarId].date.replaceAll('/', '-'), 20 remarks: content, 21 }; 22 let userId = Auth::user()->id 23 console.log(userId); 24 // メモ情報のIDがセットされていない場合は登録API、セットされている場合は更新APIを呼び出す 25 if (!state.remarkId) { 26 axios.post('/api/charge-remarks', params) 27 .then(result => { 28 console.log('register memo has succeeded!'); 29 // 返却されたIDをcalendarsの値へ返す 30 state.calendars[infoId.calendarId][infoId.columnStatus][infoId.lineId].memos[infoId.memberId] = { 31 remarkId: result.id, 32 content: content 33 }; 34 console.log(state.calendars[infoId.calendarId][infoId.columnStatus][infoId.lineId].memos[infoId.memberId]); 35 }) 36 .catch(result => { 37 console.log('error', result); 38 }); 39 } else { 40 axios 41 .put('/api/charge-remarks/' + state.remarkId, params) 42 .then(result => { 43 console.log('update memo has succeeded!'); 44 }) 45 .catch(result => { 46 console.log('error', result); 47 }); 48 } 49 Vue.set(state, 'refreshVal', state.refreshVal + 1); 50},
2.axiosでpushされた値を処理するcontrollerファイル

PHP

1public function store(ChargeRemarkRequest $request) 2 { 3 $chargeRemark = new ChargeRemark(); 4 $request->user_id = Auth::user()->id; 5 $chargeRemark->fill($request->all())->save(); 6 return response()->json(['id' => $chargeRemark->id]); 7 }

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

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

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

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

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

guest

回答1

0

ベストアンサー

「requestの上書き」なんて意味不明な発想を捨てればいい。
変な本は$request->all()使ってるけど最初からall()を使わなければそんな発想は出てこない。

php

1$chargeRemark->fill([ 2 'user_id' => $request->user()->id, 3])->save();

質問の情報が足りないから分かりにくいけど、↑も違ってて本来はこの形でuser_idの指定なんかしない。

php

1$request->user()->charge()->create($request->only([]));

JS側に渡すなら

<example user-id="{{ auth()->user()->id }}"></example>

投稿2021/01/05 04:09

kawax

総合スコア10377

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

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

nanami0221

2021/01/05 04:33

有難うございます、前者の方で設定できました! 後者の方がよくわからず、、、 $chargeRemark->fill([ 'user_id' => $request->user()->id, // ユーザーID 'charge_id' => $request->charge_id, // 担当者 'work_on' => $request->work_on, // 日付 'time_type' => $request->time_type, // AM・PM・未定 'remarks' => $request->remarks // メモ内容 ])->save();
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問