Laravelにてshowができずにハマってしまいました。
ModelIdCompleteController.php
public function show(ModelIdComplete $modelid)
{
return new ModelIdCompleteResource($modelid);
}
//ModelIdComplete ...モデル
本来showメソッドの引数は($modelidcomplete)でしたが、
無駄に長くする必要はないと思い、上記のようにshowメソッドの引数を($modelid)と省略したら、showで渡すべきデータベースの値がNullになってしまいました。
調べたところ、apiリソースを使用していると、ルートパラメータの引数設定をLaravelが自動で行ってくれるようで、Controllerでもルーティングで指定したものと同じマイグレーション名に関連する名前でないと認識してくれないようでした。これは「暗黙の結合」と呼ばれており、名前一致によって自動でモデルとデータのやり取りをしてくれているのだそうです。
そこで以下のように省略せず書いたら問題なく動きました。
ModelIdCompleteController.php
public function show(ModelIdComplete $modelidcomplete)
{
return new ModelIdCompleteResource($modelidcomplete);
}
今回は、未熟さ故に他のコードを参考にしていたら、「同じ構成のはずなのに動かない!?」とハマった出来事でした。