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

当サイトではアフィリエイト広告を利用して商品を紹介しています。
当サイトではアフィリエイト広告を利用して商品を紹介しています。

文字列のプライマリーキーを使おうと思ったらエラーが発生!!

解決までの道のりを紹介します。

ここではプライマリーキーを’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';

 

タイトルとURLをコピーしました