第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 ORM 雄辯的拉拉維爾 6.2 中創(chuàng)建復合密鑰

如何在 ORM 雄辯的拉拉維爾 6.2 中創(chuàng)建復合密鑰

PHP
qq_笑_17 2022-09-17 15:57:17
我想在數(shù)據(jù)庫中的兩個表之間創(chuàng)建一個復合鍵。我已經(jīng)找到了如何在遷移中創(chuàng)建它,但對于Eloquente ORM,我什么也沒找到。所以這是我的遷移:Schema::create('passages', function (Blueprint $table) {            $table->unsignedBigInteger('id_contract');            $table->integer('month');            $table->integer('year');            $table->text('object');            $table->integer('nbPassage');            $table->decimal('priceExclTax');            $table->timestamps();            $table->foreign('id_contract')->references('id')->on('contracts');            $table->primary(['id_contract','mois','annee']);});因此,我試圖在模型中建立一種歸屬關(guān)系,但是當我嘗試保存我的對象時,沒有任何附加內(nèi)容,并且我的數(shù)據(jù)庫中沒有 anny 行。所以我認為這是錯誤的方式。如果你有一個想法,請幫我^^。
查看完整描述

1 回答

?
GCT1015

TA貢獻1827條經(jīng)驗 獲得超4個贊

根據(jù)拉拉維爾的說法,雄辯不支持復合主鍵。你可以在這里查看這個問題


如果您真的想這樣做,那么您可以覆蓋并設置您的密鑰。setKeysForSaveQueryModel.php


默認情況下:


protected function setKeysForSaveQuery(Builder $query)

{

    $query->where($this->getKeyName(), '=', $this->getKeyForSaveQuery());


    return $query;

}

$this->getKeyName()將返回主鍵名稱,并將返回鍵的值。$this->getKeyForSaveQuery()


這意味著雄辯總是只用1個字段進行過濾。


一旦你執(zhí)行了一個動作(),它就會被調(diào)用,它的作用是在SQL中生成一個子句。saveUPDATE and DELETEWHERE


例如,將其放入使用復合主鍵的模型中:


   protected function setKeysForSaveQuery(Builder $query)

    {

        $keys = $this->getKeyName();

        if(!is_array($keys)){

            return parent::setKeysForSaveQuery($query);

        }


        foreach($keys as $keyName){

            $query->where($keyName, '=', $this->getKeyForSaveQuery($keyName));

        }


        return $query;

    }


    

    protected function getKeyForSaveQuery($keyName = null)

    {

        if(is_null($keyName)){

            $keyName = $this->getKeyName();

        }


        if (isset($this->original[$keyName])) {

            return $this->original[$keyName];

        }


        return $this->getAttribute($keyName);

    }

如果在 setKeysForSaveQuery() 定義中使用生成器參數(shù)類型,則還需要將以下內(nèi)容添加到模型的頂部:


use Illuminate\Database\Eloquent\Builder;


查看完整回答
反對 回復 2022-09-17
  • 1 回答
  • 0 關(guān)注
  • 108 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號