首頁 >後端開發 >php教程 >如何在 Laravel 5 模型中定義複合主鍵?

如何在 Laravel 5 模型中定義複合主鍵?

DDD
DDD原創
2024-12-03 20:40:12797瀏覽

How to Define Composite Primary Keys in Laravel 5 Models?

在Laravel 5 模型中定義複合主鍵

您有一個包含兩個主鍵(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 的軟刪除功能結合使用,您需要定義 returnedAt 和 withTrashed 方法。

以上是如何在 Laravel 5 模型中定義複合主鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn