ホームページ >バックエンド開発 >PHPチュートリアル >Laravel 5モデルで複合主キーを定義するにはどうすればよいですか?

Laravel 5モデルで複合主キーを定義するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-03 20:40:12756ブラウズ

How to Define Composite Primary Keys in Laravel 5 Models?

Laravel 5 モデルでの複合主キーの定義

2 つの主キー (id と language_id) を持つテーブルがあり、それらを含めたいと考えています。 Laravel 5 モデルで。デフォルトでは、Laravel モデルの主キーは「id」ですが、主キーは「id」と「id_ language」である必要があります。

これを実現するには、Eloquent を適応させる PHP トレイトを利用できます。複合キーの処理:

namespace App\Model\Traits; // Adjust this to match your model namespace!

use Illuminate\Database\Eloquent\Builder;

trait HasCompositePrimaryKey
{
    // ... (Code from provided answer)
}

この特性をメイン モデル ディレクトリの下の "Traits" ディレクトリに配置します。次に、複合キー モデルの先頭に次の行を追加します:

class MyModel extends Eloquent {
    use Traits\HasCompositePrimaryKey; // *** THIS!!! ***

    /**
     * The primary key of the table.
     * 
     * @var string
     */
    protected $primaryKey = array('key1', 'key2');

    // ...
}

追加メモ:

  • Laravel バージョン 5.7 以降の場合、トレイトで getIncrementing メソッドを定義する必要はありません。
  • 次の問題が発生した場合Model::find では、回答で提供されている find メソッドを追加できます。
  • Eloquent のソフト削除機能と組み合わせて複合キーを使用するには、deletedAt メソッドと withTrashed メソッドを定義する必要があります。

以上がLaravel 5モデルで複合主キーを定義するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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