探検


【PHP】Laravel【フレームワーク】 Part.12

■ このスレッドは過去ログ倉庫に格納されています
2022/08/31(水) 18:53:51.77ID:???
Laravel
ウェブ職人のためのPHPフレームワーク

本家
https://laravel.com/

git
https://github.com/laravel

動画チュートリアル(英語)
https://laracasts.com/

※前スレ
【PHP】Laravel【フレームワーク】 Part.9
https://medaka.5ch.net/test/read.cgi/php/1636499781/
【PHP】Laravel【フレームワーク】 Part.10
https://medaka.5ch.net/test/read.cgi/php/1647325775/
【PHP】Laravel【フレームワーク】 Part.11
https://medaka.5ch.net/test/read.cgi/php/1658553311/
404nobodyさん
垢版 |
2023/03/21(火) 00:16:26.53ID:???
GPTの登場でweb屋で食ってたのもいよいよおしまいか
プログラマ続けても安い扱い受けるだけだから別の職に就くか
405nobodyさん
垢版 |
2023/03/21(火) 09:12:15.53ID:???
どうぞご自由になさってください
406nobodyさん
垢版 |
2023/03/21(火) 10:15:34.81ID:???
今までWEB屋で食ってた人の単価
chatGPTを使いこなしてWEB屋と同じレベルのものを生成する人の単価

前者のほうが圧倒的に安いからまだ大丈夫
407nobodyさん
垢版 |
2023/03/21(火) 10:31:18.76ID:???
「ChatGPT使っていいから単価1/10でやって」
「ChatGPT使っていいから今日中におねがい」
「ChatGPT使っていいから検収やっといて」
408nobodyさん
垢版 |
2023/03/21(火) 10:34:13.72ID:???
「ChatGPTが正しいかどうかをテストする要員を追加したく」
409nobodyさん
垢版 |
2023/03/21(火) 10:42:15.68ID:???
で、不具合が出たとき、ChatGPTのせいだからしかたないね〜とはならず、
担当者のせいになる
410nobodyさん
垢版 |
2023/03/21(火) 11:19:41.05ID:???
ChatGPTが1から10までやってくれるわけじゃないのに
411nobodyさん
垢版 |
2023/03/21(火) 11:58:36.70ID:???
今はまだ結構間違ってるからねえ
でもそのうちフレームワーク自体がそれらを利用するようになるかもね
いまのartisanコマンドが進化するイメージ
412nobodyさん
垢版 |
2023/03/21(火) 12:38:20.84ID:???
ちゃんと要件を欠けば、コードが生成されるみたいな
でも、アホな蔵相手だと要件がいつまで経っても決まらないし、二転三転する
から、永遠にリリースできないのは今と同じかも
413nobodyさん
垢版 |
2023/03/22(水) 00:46:13.10ID:???
windows環境で
laravelをxamppで実行できる環境作ったが当初動かなかった
composerをインストールし直したりした

結論はhtdocsの中に作れって事だった

しかし今度はzip展開できないとエラーが出たので
検索してphp.ini内のextension zipのコメントアウトを外して読めるようにしろとあったので
直したらまあうまく行った、らしい

とこんな出来の悪い自分でも出来るっぽいので
ChatGPTならもっとサクサク作るのか
414nobodyさん
垢版 |
2023/03/22(水) 01:44:20.35ID:???
XAMPPという初手からして間違ってるからなぁ
AI云々以前じゃね?
415nobodyさん
垢版 |
2023/03/22(水) 07:50:06.06ID:???
xamppなんてまだ使ってる人いたのか
416nobodyさん
垢版 |
2023/03/22(水) 08:08:04.46ID:???
Udemyとかのコースはxammpだからむしろ多いんじゃないか
417nobodyさん
垢版 |
2023/03/22(水) 12:13:54.04ID:???
そうなるとゼロからLaravelだけ学ぶ感じか
短期的には仕事を貰えるかもしれないが基盤技術を学ばないなら技術者としての寿命は短そうだな
418nobodyさん
垢版 |
2023/03/22(水) 12:23:53.76ID:???
公式ドキュメントをChatGPTに学習させればLaravelの開発できるかもね
419nobodyさん
垢版 |
2023/03/22(水) 12:24:57.09ID:???
それくらいならもうやってくれるぞ
420nobodyさん
垢版 |
2023/03/22(水) 16:05:31.67ID:???
Windowsの人はせめてWSL2は触れないと厳しかろう
仕事でxamppってフレーズが口から出てくる人いたら、
それはもう危険よね
421nobodyさん
垢版 |
2023/03/22(水) 20:50:39.02ID:???
今日発売のLaravel10の本買った
そこでもSail説明してたから、これを機会にXamppは卒業するわ
422nobodyさん
垢版 |
2023/03/23(木) 11:18:48.83ID:???
ちんちん!シュッシュッ!シュッ!!
423nobodyさん
垢版 |
2023/03/31(金) 16:22:59.50ID:???
今まで6使ってて10の勉強してるんだが、あまり変わらないんだな
強いて言えばBladeコンポーネントぐらいか
これ使わなくてもビューは作れるし、少しずつ移行できそうだ
424nobodyさん
垢版 |
2023/03/31(金) 16:34:08.60ID:???
Laravelってfulljoin無いの?
探しても見つからない…
誰か助けて…
425nobodyさん
垢版 |
2023/04/02(日) 00:10:55.99ID:???
分からんなら生SQL投げればええやん
426nobodyさん
垢版 |
2023/04/02(日) 19:05:28.53ID:i1/+p30I
bingに
「aravel breezeに2段階認証を追加する方法を詳細に説明せよ。」
と言ったら、

Laravel Breezeには2段階認証機能はついていないようです1。
しかし、Laravel Jetstreamをインストールすると、
ログイン、新規登録、メール検証、2段階認証、セッション管理、
APIサポート(Laravel Sanctum)、チーム管理などが提供されます2。
Laravel Jetstreamの導入方法は以下のQiitaの記事を参考にしてください2。
詳細情報:
1. bing.com
2. qiita.com
3. blog.capilano-fw.com
4. qiita.com
5. reffect.co.jp
6. prograshi.com
7. biz.addisteria.com
8. biz.addisteria.com
9. qiita.com
10. bing.com
11. webopixel.net
+8 その他

2段階認証するためには「Laravel Jetstream」をインストールするのが無難ですか?
427nobodyさん
垢版 |
2023/04/02(日) 19:12:52.41ID:???
環境作って要件満たすか検証すりゃいいじゃん
嫌なら自前で作ればいい
428nobodyさん
垢版 |
2023/04/02(日) 20:10:46.01ID:???
AIは結構嘘つくから自分で学ぶのが一番だよ
429nobodyさん
垢版 |
2023/04/02(日) 23:04:14.10ID:???
composerのパッケージ検索で二段階認証ぽいのは結構あるけど
要件に合ってなきゃ意味無いしね
Google認証システムを使う奴なんかはググレば直ぐ見つかるし
SMSでパス送る奴よりは作りやすそう
430nobodyさん
垢版 |
2023/04/02(日) 23:49:10.20ID:???
sailってphpとcomposerがホストマシンに無いと動かないポンコツ仕様はなんとかならんのか
431nobodyさん
垢版 |
2023/04/03(月) 00:06:33.00ID:???
sail、バージョン指定できないのが辛い
常に最新版で開発したい人って多くないだろ
432nobodyさん
垢版 |
2023/04/03(月) 16:22:19.65ID:???
ぴえん🥺
433nobodyさん
垢版 |
2023/04/04(火) 06:58:57.66ID:???
ちんちんシュッシュッ!!シュッ!
434nobodyさん
垢版 |
2023/04/06(木) 23:27:15.15ID:???
10で編集・更新について教えてください。

$post = Post::find(1);
$post->name = $request->name;
$post->address = $request->address;
$post->comment = $request->comment;
$post->save();

こんな感じで書けば更新はされるのですが、
更新したいカラムを全て書かなければいけないのでしょうか?
カラム数が多いと手間ですが、省略できる書き方があれば教えてください。
435nobodyさん
垢版 |
2023/04/07(金) 02:19:17.92ID:???
ぺたんこおっぱい
ぽっこりおなか
つるつるわれめ
436nobodyさん
垢版 |
2023/04/07(金) 03:48:12.04ID:???
>>434
モデル側でfillable設定してから
$post->update($request->all());
これでできるけど
フォームリクエスト使ってこうした方が良い
$post->update($request->validated());
437nobodyさん
垢版 |
2023/04/07(金) 08:44:45.14ID:???
ありがとうございます。このやり方でできました。

$post = Post::find(1);
$post->fill($request->all())->save();
438nobodyさん
垢版 |
2023/04/07(金) 16:24:13.13ID:???
fillable設定ってどれだけカラム数があってもするべきですか?
439nobodyさん
垢版 |
2023/04/07(金) 18:12:11.12ID:???
>>438
fillableがなぜ存在するかを理解してるなら
100カラムだろうが1000カラムだろうが必要ならするべきって結論に至るはずよ

他の方法でguardedに空配列って手もあるけどお勧めしない
> すべての属性を一括割り当て可能にしたい場合は、モデルの$guardedプロパティを空の配列として定義します。
> モデルの保護を解除する場合は、Eloquentのfill、create、およびupdateメソッドに渡たす配列へいちいち特別な注意を払う必要があります。
440nobodyさん
垢版 |
2023/04/07(金) 20:59:50.00ID:???
guardedにidだけ指定するのはよくするけど
441nobodyさん
垢版 |
2023/04/07(金) 22:22:37.81ID:???
皆さんエディタって何使ってます?
442nobodyさん
垢版 |
2023/04/07(金) 22:24:26.57ID:???
そらVSCodeよ
443nobodyさん
垢版 |
2023/04/07(金) 22:29:20.31ID:???
phpstorm勢は少ないのか・・・
444nobodyさん
垢版 |
2023/04/08(土) 02:59:28.50ID:???
昔は使ってたけど、今となっては…
445nobodyさん
垢版 |
2023/04/08(土) 16:55:18.30ID:???
Laravelに、CakePHPでいうCounterCacheのような機能ってありますかね?
関連するテーブルが追加されたらカウントアップするみたいな

調べても単純なカウントアップはあるのですが、
自動カウントはなさそうなので困っています。
446nobodyさん
垢版 |
2023/04/08(土) 17:46:58.76ID:???
>>445
CounterCacheがどんな機能なのかわからないけどオブザーバー使って実現できるんじゃないかな
447nobodyさん
垢版 |
2023/04/09(日) 12:06:15.20ID:???
>>446
オブザーバーで、save/update後に登録数をcountするようにします。
単純な方法ですが、既存のCounterCacheも同じような仕組みなので
このやり方がベターなんだと思います。
448nobodyさん
垢版 |
2023/04/10(月) 12:32:43.55ID:???
phpstormって何でlaravelのサポート削除したの?
449nobodyさん
垢版 |
2023/04/10(月) 17:09:26.30ID:???
マイグレーションのintegerにZEROFILLを指定したい場合、どう書けばいいのでしょうか?
450nobodyさん
垢版 |
2023/04/10(月) 19:58:37.10ID:???
>>449
無理やりやればできるけど基本的にはやらない方がいい
理由はMySQLの機能なのでDBをpostgressとか他のストレージエンジンに変更した場合
マイグレーションでエラーになるかその機能が付与されない
実現する場合はモデルでその機能を実装する
451nobodyさん
垢版 |
2023/04/11(火) 09:13:08.76ID:???
>>450
そうですか。それならstringとかcharにして文字列として扱います。
452nobodyさん
垢版 |
2023/04/11(火) 12:12:43.05ID:???
zerofillでググったらmysql8.0からintのzerofillが非推奨になってるみたいだね
453nobodyさん
垢版 |
2023/04/11(火) 12:33:45.57ID:???
大体はアプリでやる方がキレイだしね
454nobodyさん
垢版 |
2023/04/11(火) 17:41:19.56ID:???
例えば外部APIやローカルファイルがデータソースだった場合で、Modelの機能だけを使いたい場合ってどうしてます?
使いたいのはキャスタ、アクセサ、ミューテタ、状態管理辺りの機能
良い方法が無くて自作したんだけどベストプラクティスがあればそっちに変えたいんです
455nobodyさん
垢版 |
2023/04/11(火) 18:25:48.79ID:???
それはLaravelのいうところのModelにはならん気がするけど、それをどこに置くかってこと?
456nobodyさん
垢版 |
2023/04/11(火) 18:38:57.42ID:???
機能としてはDTOが一番近しいんだけど
Modelと同じ使用感でattributes、fillable、hiddenとか設定できたり
既に資産として存在するカスタムキャスタを使ったりしたい
457nobodyさん
垢版 |
2023/04/14(金) 01:35:30.50ID:O955HWXC
社内データを元に原価予測等の傾向分析を含むWEBサイトを開発するとしたら
データ分析部分はPythonでやらせるとして、
WEBはPHPかLaravelで分析ロジックはexe化したpythonプログラムをPHPのexec関数なんかで呼び出すか、
またはWEBをDjangoで分析ロジックも含めてコーディングするか、
あたりの2案その他を考えていますがどっちが良いか悩みます
開発やメンテ容易性、レスポンスなんかで考えるとどれになるのかなと
AI分析を絡めたWEBサイトの案件は多くなりそうですし、フリーのフレームワークで安価に構築したい要求もありますしね
458nobodyさん
垢版 |
2023/04/14(金) 01:38:40.97ID:???
ちんちん!シユシュッシュッ!
459nobodyさん
垢版 |
2023/04/14(金) 07:48:46.99ID:???
データ分析時間がどのくらいか知らないけど、時間かかるようならバッチ処理したデータ分析結果をWEBで見るやり方かなあ
460nobodyさん
垢版 |
2023/04/14(金) 08:48:59.56ID:???
フォームを検索するときに、コントローラで

$post = Post::query();
if ($request->query('name')) {
$post->where('name', $request->query('name'));
}
$result = $post->get();

みたいな書き方をしているのですが、
フォームの項目が増えるほどIFも増えて冗長化します。
良いライブラリとかコンポーザのパッケージはないでしょうか?
461nobodyさん
垢版 |
2023/04/14(金) 12:57:11.00ID:???
>>460
一番雑で簡単な返答はFormRequestでバリデーション入れて
Post::query()->where($request->validated())->get()
なんだけどこれは実践だとクソの役にも立たないのでやっちゃダメ
自分の実装を簡単に書くと例えば下記の方法

ModelにScope作る
public function scopeSearch(Builder $builder,array $params ):Builder
{
$builder = $this->scopeSearchName($builder,data_get($params,'name'));
return $builder ;
}

public function scopeSearchName(Builder $builder, $name ):Builder
{
if( blank($name) ) {
return $builder ;
}
return $builder->where('name',$name ) ;
}

コントローラーで呼び出す
Post::search($request->validated())->get()

個別に使うなら
Post::searchName($request->query('name'))->get()
462nobodyさん
垢版 |
2023/04/14(金) 13:38:42.25ID:???
>>461
モデルごとにこれを書くなら、IFで書く場合と大差ないことないですか?

あと、$request->validated()ってバリデーション通すのはなぜですか?
検索でバリデーションをすると、requiredでひっかかりそうですが
463nobodyさん
垢版 |
2023/04/14(金) 14:51:00.39ID:???
>>462
> モデルごとにこれを書くなら、IFで書く場合と大差ないことないですか?
「IFで書く場合」ではなく「コントローラーに書く場合」として回答すると
大差ないか?という事であればベストプラクティスとバッドプラクティスの差がある
コントローラは単一の責任だけを持たないといけないのでモデルの検索ロジックがコントローラーに書かれていることがおかしい

以下ChatGPTの回答

検索ロジックをコントローラに書いてしまうと、コントローラが複雑になり、保守性が低下する可能性があります。
以下に詳しく説明します。

1. コードの可読性が低下する
コントローラに検索ロジックを含めると、コントローラの役割が複雑になり、コントローラのメソッドが大きくなり、可読性が低下する可能性があります。
コントローラの役割が明確でなくなるため、コントローラの修正や保守が困難になる可能性があります。

2. テストが困難になる
コントローラに検索ロジックを含めると、コントローラのテストが困難になる可能性があります。
コントローラに含まれる検索ロジックは、外部の依存関係を持つ可能性があり、依存関係をモック化する必要があるため、テストコードが複雑になる可能性があります。

3. 再利用性が低下する
コントローラに検索ロジックを含めると、再利用性が低下する可能性があります。
コントローラは、Webアプリケーションの特定の機能を担当するために設計されており、その機能に特化した責任を持つように設計されるべきです。
検索ロジックがコントローラに含まれると、コントローラが特定の機能に依存してしまうため、他の機能で再利用することが困難になる可能性があります。

以上の理由から、検索ロジックをコントローラに含めず、別の場所に分離することをお勧めします。
例えば、リポジトリパターンを使用して、データベースからデータを検索する責任を持つクラスを作成し、コントローラからはそのクラスを呼び出すようにすることができます。
これにより、コントローラは単一の責任を持ち、コードの保守性が向上し、テストの容易性や再利用性が高まります。
464nobodyさん
垢版 |
2023/04/14(金) 15:04:32.87ID:???
>>462
続き
> あと、$request->validated()ってバリデーション通すのはなぜですか?
入力値の操作ができるので入力値に関する責任をコントローラーから切り離せる
https://readouble.com/laravel/9.x/ja/validation.html#preparing-input-for-validation
要するに検索項目に入れたくないパラメータやら値を省くことができる

> 検索でバリデーションをすると、requiredでひっかかりそうですが
nullableを使えばよい
465nobodyさん
垢版 |
2023/04/14(金) 15:15:47.82ID:???
>>462
一応ChatGPTの回答

検索リクエストの値をバリデーションする理由は、以下のようなものがあります。

1. 検索クエリの安全性を確保するため
検索クエリに含まれる値が適切にバリデーションされていない場合、悪意のあるユーザーによってSQLインジェクション攻撃などのセキュリティ上の問題が引き起こされる可能性があります。
バリデーションを行うことで、入力された値が予想されるフォーマットに一致しているかどうかを確認することができ、攻撃を防ぐことができます。

2. 検索結果の品質を向上するため
検索クエリに含まれる値が適切にバリデーションされていない場合、意図しない検索結果が表示される可能性があります。
たとえば、数字のみを入力することが想定されているフィールドに文字列が入力された場合、検索結果に誤りが生じる可能性があります。
バリデーションを行うことで、検索クエリが適切に構成されているかどうかを確認することができ、正確な検索結果を得ることができます。

3. UXを向上するため
検索リクエストのバリデーションにより、ユーザーが誤ったクエリを送信してしまった場合にエラーメッセージを表示し、適切な入力を促すことができます。
これにより、ユーザーのUXが向上し、検索エラーを減らすことができます。

以上のような理由から、検索リクエストの値をバリデーションすることが重要となります。
466460
垢版 |
2023/04/14(金) 16:32:57.48ID:???
確かにコントローラに検索ロジックを書くと複雑になりますね。
管理画面用のコントローラと公開画面用のコントローラで
似たようなソースを書いてるので余計に無駄です。

検索バリデーションについては思うところもありますが、
とりあえずベストプラティクスに近づけたいので
出来る範囲で対応したいと思います。
467460
垢版 |
2023/04/14(金) 17:27:24.43ID:???
すみません、スコープ作った場合でも、

public function scopeSearchName($query, $name){
 if ($name !== null) {
  return $query->where('name', $name);
 }
}

みたいにIFで判定するのは仕方ないんですかね?

また、検索項目が複数ある場合、

User::searhName($request->query('name'))->searhType($request->query('type'))->searhBirth($request->query('birth'))

みたいにどんどん長くなるのも仕方ないんですかね?
468nobodyさん
垢版 |
2023/04/14(金) 17:53:45.98ID:???
>>467
> IFで判定するのは仕方ないんですかね?
これって値が空の場合検索条件追加しないでクエリビルダを戻すって事やってるから
値の有無関係なく検索する必要があるなら(nullを検索したい場合には)条件分岐しなくとも良い
というより何をどう検索したいかによってScope内の処理は変わるから何とも言えない

> 検索項目が複数ある場合
> どんどん長くなるのも仕方ないんですかね?
コントローラー内からシンプルに呼び出せる様にscopeSearchを書いたつもりなんだけど

public function scopeSearch(Builder $builder,array $params ):Builder
{
$builder = $this->scopeSearchName($builder,data_get($params,'name'));
$builder = $this->scopeSearchType($builder,data_get($params,'type'));
$builder = $this->scopeSearchBirth($builder,data_get($params,'birth'));
return $builder ;
}
469460
垢版 |
2023/04/14(金) 17:58:44.88ID:???
とりあえずスコープの勉強が足りないことはわかりました
色々と試行錯誤してやってみます。ありがとうございました
470nobodyさん
垢版 |
2023/04/16(日) 02:39:49.01ID:???
クエリビルダでwhen()があるので
if()で条件判定して追加するよりはスマートな気がする
データが入ってないと検索条件が増えないようなものには俺の場合はwhen()で対処している
良くある検索条件が複数あって未入力はパスのようなやつね
471460
垢版 |
2023/04/16(日) 09:50:36.55ID:???
>>470
どういう書き方になるのでしょうか?
>>468の書き方を採用しているのですが、

if (data_get($params,'name') !== null) {
$builder = $this->scopeSearchName($builder,data_get($params,'name'));
}

な感じでIF入れてます。IF入れないと$paramsに存在しない場合エラーになるので。
472nobodyさん
垢版 |
2023/04/21(金) 18:06:14.14ID:eZ0hTZy/
APIサーバーとしてLaravelを使用してるけど、Laravel Sanctum良いね
認証処理が一瞬で構築できる
473nobodyさん
垢版 |
2023/04/23(日) 18:55:40.49ID:???
オブジェクトのことよくわかってなかったんだが、

$user = User::find(1);
$old_user = $user;
$user->update($request->all());

ってすると、$old_userの中身が更新済みの値に変わるんだな。
474nobodyさん
垢版 |
2023/04/23(日) 22:30:11.53ID:???
>>473
clone を使わないとダメあるよ
475nobodyさん
垢版 |
2023/04/23(日) 22:59:19.23ID:CuNCCdp5
ミュータブル、イミュータブルという言葉で調べてみると良いかも
476nobodyさん
垢版 |
2023/04/23(日) 23:14:34.79ID:???
>>474
$user = User::find(1);
$old_user = clone $user;

こうするのね。勉強になった
477nobodyさん
垢版 |
2023/04/24(月) 02:02:01.12ID:???
というかオブジェクトだからとかあまり関係ない気はするけど、大丈夫ならいっか
478nobodyさん
垢版 |
2023/04/26(水) 07:28:13.95ID:???
変数の命名規則ってどうしてる?
キャメルケースにしろという説明もあれば
スネークケースの方がいいというのもあるけど。
自分はメソッドと区別するためにスネークケースにしてる
479nobodyさん
垢版 |
2023/04/26(水) 08:44:49.28ID:???
>>478
> キャメルケースにしろという説明
これってどこにある?見たことない
480nobodyさん
垢版 |
2023/04/26(水) 10:40:10.16ID:???
>>479
「laravel ベストプラクティス」でググった一番上のページに書かれてますよ
481nobodyさん
垢版 |
2023/04/26(水) 10:58:43.96ID:???
>>478
その説明だとPSRに従った上で変数はキャメルケースを推奨してるからキャメルケースでいいんじゃないかな
自分としてはメソッド名、クラス名と同じ方がキャメルケースのがやりやすいかな
482nobodyさん
垢版 |
2023/04/26(水) 11:06:07.79ID:???
>>481
公式もキャメルケースなんですよね。
ビューでforeachするときに

@foreach ($userProfiles as $profile)
$profile->name
@endforeach

みたいに書くのはどうかと思った(テーブル名はuer_profles、モデルはUserProfileなのに)
のですが、PSRや公式に従うならキャメルケースの方が良いですかね
483nobodyさん
垢版 |
2023/04/26(水) 11:13:39.59ID:???
あと、テーブルのカラムはfirst_nameみたいにスネークケースにするのに、
変数はキャメルケースだから、findの値を比較するときに
($firstName === $user->first_name)
となるので、おかしくないか?とも思いました。
484nobodyさん
垢版 |
2023/04/26(水) 14:17:15.08ID:O+wKXsaI
>>482
特にそれで違和感ないけどね
485nobodyさん
垢版 |
2023/04/26(水) 14:28:06.87ID:???
カラム名ってわかるからまあいいかな、って感じ
逆に他に変えるとその方が色々おかしくなりそう
486nobodyさん
垢版 |
2023/04/26(水) 21:33:35.41ID:???
$user = User::with(['posts'])->first();
$user_id = $user->id;

ってコントローラーでしたら駄目なんですか?
vscodeさんがUndefined propertyってエラー出してくるんですが
487nobodyさん
垢版 |
2023/04/26(水) 21:53:09.30ID:???
>>486

> vscodeさんがUndefined propertyってエラー出してくるんですが
おそらくエラーじゃなくて警告だと思うけど
Userモデルにプロパティが設定されてないって言ってる
出ない様にするにはPHPDocの書式で必要なプロパティを書いてあげればいいはず
例えばこんな感じ
/**
* Class User
*
* @property int|null id
*
* @package App\Models
*/
class User extends Model
488nobodyさん
垢版 |
2023/04/26(水) 22:01:28.39ID:???
>>486
それからこの書き方だと
usersテーブルにレコードが無い場合エラーになるでしょ
489nobodyさん
垢版 |
2023/04/26(水) 22:29:32.19ID:???
>>487-488
レコードの有り無しはともかくとして、
リレーションのwithをつけるかつけないかで警告が出ます
UserモデルもPostモデルも存在するのに
他にも記述は合ってる(値は取得できる)のに警告が出るし、
vscodeさんって結構厳しいんですね
490nobodyさん
垢版 |
2023/04/26(水) 22:58:30.62ID:???
>>489
vscodeが厳しいんじゃなくてあなたが緩いのでは無いかと
もっと型と変数の状態を意識するとよいと思うよ
> 他にも記述は合ってる(値は取得できる)のに警告が出るし、
値は取得できる「可能性がある」なので警告がでるんです
100%値が取得可能な状態であれば警告は出ないはず
これは値チェックとか例外処理で回避できる
491nobodyさん
垢版 |
2023/04/27(木) 11:40:47.66ID:???
>>490
phpstormだと100%値取得可能ならでないけどvscodeだと100%値が取得可能な状態であっても警告でるよ。
492nobodyさん
垢版 |
2023/04/27(木) 13:52:43.21ID:???
>>491
すまんvscode使って無いから知らなかった
ちなみにどんな警告がでるの?
493nobodyさん
垢版 |
2023/04/27(木) 15:34:18.89ID:???
それよりも一つだけなのにwith()に配列で渡すところが気持ちが悪いw
494nobodyさん
垢版 |
2023/04/28(金) 07:53:02.35ID:???
>>492
使ったこと無いのに他人に指摘してたのかよ・・・
495nobodyさん
垢版 |
2023/04/29(土) 20:14:23.37ID:???
JavaScriptでタイマー処理をしています。
指定した秒数(ここでは10秒)経過したらタイマーを停止する様にしていますが
タイマーが止まりません。助けてください、、、

$(document).ready(function(){
$("#id_div_test").click(function () {
setInterval(TestFunction , 1000);
});
});

var i_current_second = -1;
function TestFunction()
{
i_current_second++;
if( i_current_second == 10)
{
clearInterval(TestFunction);
}
}
496nobodyさん
垢版 |
2023/04/29(土) 20:22:13.26ID:???
>>495
intervalじゃなくtimeout使ったら?
正直よっぽど一秒間隔が重要じゃない限りは柔軟に停止できるtimeout使う方がいい
497nobodyさん
垢版 |
2023/04/29(土) 20:45:25.76ID:???
>>496
調べてみます。
498nobodyさん
垢版 |
2023/04/29(土) 21:22:06.46ID:???
そもそもの話上記の場合だと
var id = setInterval…
clearInterval(id)
ってやらんと止まらんけど
基本setIntervelでやらんといけないケースって殆どないと思う
499nobodyさん
垢版 |
2023/04/29(土) 22:01:35.72ID:???
>>498
ありがとうございます。
そういう書き方をするのですね。ネットで調べたブログに↑の用なコードがかかれていました。
500nobodyさん
垢版 |
2023/04/30(日) 00:03:05.99ID:???
>>498
出来ました!
ありがとうございます!
501nobodyさん
垢版 |
2023/04/30(日) 12:00:25.29ID:???
便乗質問ですが、Ajaxの処理するときって
バックエンドは普通にコントローラーに書いてもいいですか?
それとも専用のファイルに書くのでしょうか?

たとえば、タイマーで指定時間になる毎にDBからデータを取得して
結果をビューに表示するような処理です。
502nobodyさん
垢版 |
2023/04/30(日) 12:25:15.80ID:gJ/V2xTa
好きにすれば良いと思うが、
普通はそのすべての処理をコントローラーには書かないと思う
https://qiita.com/kouki_o9/items/5b6d957c78583232fb09
503nobodyさん
垢版 |
2023/04/30(日) 17:04:22.03ID:???
同じページのajax(API)なら同じコントローラに書いた方が分かりやすいだろうね
ルートはwebページの方はroutes/web.phpにAPIはroutes/api.phpに分けて書く事はあるかな
(ただしapiの方に書くとdomain/api/指定ルートになる)
まぁ、この辺は個人なら好きにやればいいし
プロジェクトならルールに従うしかないかと
■ このスレッドは過去ログ倉庫に格納されています