ホームページ >PHPフレームワーク >Laravel >laravelは主キーが存在しないというプロンプトを表示します

laravelは主キーが存在しないというプロンプトを表示します

PHPz
PHPzオリジナル
2023-05-21 10:26:06786ブラウズ

Laravel をデータベース操作に使用すると、主キーがないというよくある問題が発生することがあります。これは、Laravel のデフォルトモデルでは主キーが自動的に id であるとみなされるためで、データベースに id フィールドが存在しないか、フィールドが主キーとして設定されていない場合は、主キーがないというエラーが表示されます。

それでは、主キーがない問題を解決するにはどうすればよいでしょうか?以下では、データベースとLaravelモデルの観点からそれぞれ解決策を紹介します。

1. データベース ソリューション

  1. 主キーの設定

MySQL データベースでは、ALTER TABLE ステートメントを使用してテーブル構造を変更できます。主キーの設定も含みます。例:

ALTER TABLE 表名 ADD PRIMARY KEY(字段名);

このうち、テーブル名とフィールド名は自分で置き換える必要があります。

  1. 新しい主キーの作成

データベースに適切な主キー フィールドがない場合は、新しい主キー フィールドを作成することで問題を解決できます。例:

ALTER TABLE 表名 ADD 字段名 INT AUTO_INCREMENT PRIMARY KEY;

このうち、テーブル名とフィールド名は自分で置き換える必要があります。 AUTO_INCREMENT は、フィールドが自動インクリメントされることを示します。

2. Laravel モデル ソリューション

  1. 主キーのカスタマイズ

Laravel モデルでは、$primaryKey 属性を通じて主キーをカスタマイズできます。例:

class User extends Model
{
    protected $primaryKey = 'user_id';
}

ここでは主キーが user_id に設定されています。

  1. 自動インクリメント主キーを無効にする

非自動インクリメント主キーを使用している場合は、$incrementing プロパティを false に設定して、自動インクリメント主キー。例:

class Product extends Model
{
    public $incrementing = false;
}
  1. 主キー値を手動で指定する

特定のシナリオでは、主キー値を手動で指定する必要がある場合があります。これは、モデル内で $keyType プロパティと $fillable プロパティを設定することで実現できます。例:

class Order extends Model
{
    protected $keyType = 'string';
    protected $fillable = ['order_id', 'product_name'];
}

ここでは、主キーのタイプが文字列に設定され、入力可能なフィールドが定義されています。

まとめ

上記の方法により、Laravel モデルの主キーがない問題を解決できます。実際の開発では、特定のニーズに応じて対応するメソッドを選択できます。同時に、競合の可能性を避けるために主キーの一意性を確保することに注意を払う必要があります。

以上がlaravelは主キーが存在しないというプロンプトを表示しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。