コトの発端
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のエラーが出なくなっていることがわかる。

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