PHP プログラミング

Laravelのモデルにて、this->primaryKeyがPHP Intelephenseの型エラーになる。複合主キーのために配列にしたケースにおいて。

コトの発端

PHP Intelephenseを導入したVSCodeの環境において、Laravelのモデルの$this->primaryKeyを呼び出そうとしたらPHP Intelephenseがエラーを出している。プログラムは誤ってなさそう。

$this->primaryKeyにエディタのエラーが表示されている。

エラー詳細

Expected type 'iterable|object'. Found 'string'.intelephense(P1006)

本来は'iterable|object'が渡されるところに、string型が渡されちゃったよ的なエラー。

プログラムを見ての通りモデルが複合主キーを見越して配列型なので、primaryKeyは配列にて再定義している状態である。

おそらく定義元の親のModelクラスにてprimaryKeyはStringである旨の定義がされていると予想したところ、下記の通りその通りっぽい。

Model.php

複合主キーの場合はarray型であることを@varのキーワードで教えてあげればよさそう。

解決編

$primaryKeyを再定義するとき、直上のコメント内に@var array を記載して$primaryKeyがarray型であることを認識させよう。

$this->primaryKeyに発生していたPHP Intelephenseのエラーが出なくなっていることがわかる。

いつもの

記事の内容は無保証です。

  • この記事を書いた人
あっきー

あっきー

とある企業の研究者。研究分野以外に手を出しすぎて毎日が慌ただしい。 研究者の肩書きが正しいかどうかは万年の謎。 得意ジャンルはデータベースとセキュリティーですが、AIやIoT、アプリ開発など、手広く活動しています。

-PHP, プログラミング
-, ,

Translate »