Help us understand the problem. What is going on with this article?

laravelで文字列のプライマリーキーに必要なコード

まず最初に。
初心者なので違ったことを書いている場合があるかもしれませんので、
その時はご指摘いただければと思います。

現在、laravelでCRUDを勉強中。

そこでつまづき、解決したエラーを1つ紹介します。

前提として文字列のプライマリーキーを使っています。

ここではプライマリーキーを'string_id'と仮定しています。

一覧表示までは上手くいっていたけど、
一覧表示から詳細を表示するところまでコードを書いて詳細表示しようとしたら以下のエラーが発生。

SQLSTATE[HY000]: General error: 1 no such column: id

これって'id'がありませんよってことだと思い、
調べたらプライマリーキーが'id'以外の場合は明示的に指定すること必要で以下のコードをModelファイルに追加しました。

protected $primaryKey = 'string_id';

さっき設定したじゃん!!

そうしたら次は文字列で設定しているプライマリーキーが一覧表示で0と表示される現象に遭遇。

詳細表示しようとしたら以下のエラーが発生。

Trying to get property 'string_id' of non-object

これは'string_id'が無いってことだと思い・・・

ってさっき設定したじゃん!!

小一時間ほど調べましてやっと解決策を見つけました。

結局、文字列キーの場合は以下の設定が必要なことがわかりました。

protected $keyType = 'string';

まとめますと文字列のプライマリーキーでは以下の2つのコードが必要だとわかりました。

protected $primaryKey = 'string_id';
protected $keyType = 'string';

やっぱりバックアップは必要です!!

余談ですが、
私が進めているプロジェクトで実は一旦第一段階まで完成していたんですが、
手違いで削除してしまい復元もできる限り挑戦してみましたが無理でした。

今までプログラムを打つときはgitで管理してgithubでリモートリポジトリを管理していたんですが、今回に限ってgitで管理していなかったんですよね・・・。

バックアップという観点からも git+github は便利ですから使ってみることをお勧めしたいです。

salt-margin-trader
プログラミング超初心者です。株式投資の銘柄や取引などをエクセルで管理していたけど、データが多くなり重くなったのでデータベースを使ったウェブアプリを作ろうと決心。でも、なかなかはかどらないけど、ぼちぼちプログラムを作っていきます。
https://toushi-muzu.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away