欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

laravel中Pivot模型ID的示例分析-創(chuàng)新互聯(lián)

小編給大家分享一下laravel中Pivot模型ID的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)建站IDC提供業(yè)務(wù):南充服務(wù)器托管,成都服務(wù)器租用,南充服務(wù)器托管,重慶服務(wù)器租用等四川省內(nèi)主機(jī)托管與主機(jī)租用業(yè)務(wù);數(shù)據(jù)中心含:雙線機(jī)房,BGP機(jī)房,電信機(jī)房,移動機(jī)房,聯(lián)通機(jī)房。

Laravel 是什么

Laravel 是一套簡潔、優(yōu)雅的PHP Web開發(fā)框架。它可以讓你從面條一樣雜亂的代碼中解脫出來;它可以幫你構(gòu)建一個完美的網(wǎng)絡(luò)APP,而且每行代碼都可以簡潔、富于表達(dá)力。

項目環(huán)境

老系統(tǒng)(linux + laravel5.6 + php7.2 + mysql5.7)

升級后新系統(tǒng)(linux +laravel5.8 + php7.2 + mysql5.7)

只單純升級了laravel框架版本,并無升級其他相關(guān)服務(wù)依賴.

但是卻出現(xiàn)大量的SQL執(zhí)行錯誤,異常監(jiān)控如下:

laravel中Pivot模型ID的示例分析

分析過程

導(dǎo)致這段服務(wù)出錯的是這樣的一段業(yè)務(wù)邏輯,下面通過一段demo來模擬.

$pivot = UserRole::firstOrCreate([
    'user_id' => 3,
    'role_id' => 3,
]);
$this->addRoleHistory($user,$pivot->id);
dd($pivot->id);

在laravel5.6版本中這段代碼運(yùn)行起來毫無問題,但升級到5.8版本中就會引發(fā)大量的SQL執(zhí)行錯誤,就像下面這樣.

laravel5.6:
    dd($pivot->id); //10002
laravel5.8:
    dd($pivot->id); //null

在5.6中保存中的數(shù)據(jù)還能正常獲取到ID,在5.8中怎么就不行了呢,于是馬上去查看了laravel5.8的發(fā)行說明,也沒有發(fā)現(xiàn)對Pivot模型取消獲取自增ID的改動,于是開始進(jìn)行5.8源碼查閱。。。

首先對5.6和5.8的firstOrCreate函數(shù)進(jìn)行了對比,發(fā)現(xiàn)無改動,代碼邏輯執(zhí)行無誤。

laravel中Pivot模型ID的示例分析

然后繼續(xù)翻閱model->save()函數(shù)的代碼

,發(fā)現(xiàn)不存在的數(shù)據(jù)是通過insertAndSetId該函數(shù)插入數(shù)據(jù)并設(shè)置主鍵ID

laravel中Pivot模型ID的示例分析

但insertAndSetId函數(shù)又是通過incrementing這樣的一個成員屬性來控制的,屬性的默認(rèn)值是true

laravel中Pivot模型ID的示例分析

當(dāng)這個屬性變更時就不會執(zhí)行者一步驟,難道這個成員屬性在被操作過了?

于是立馬查看了5.8的pivot模型源碼.

laravel中Pivot模型ID的示例分析

最終發(fā)現(xiàn)是5.8的在中間表Pivot Class默認(rèn)將incrementing設(shè)置成了false,所以數(shù)據(jù)被成功插入,但是沒有設(shè)置插入后的主鍵ID,造成剩余服務(wù)崩潰,沒能正常運(yùn)行...

修復(fù)方案

在每個Pivot Class中重新覆蓋掉incrementing屬性值為true即可.

class UserRole extends Pivot
{
    public $incrementing = true;
    protected $fillable = [
        'user_id',
        'role_id',
    ];
}

修復(fù)后:

laravel5.8:
    dd($pivot->id); //10003

以上是“l(fā)aravel中Pivot模型ID的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

分享標(biāo)題:laravel中Pivot模型ID的示例分析-創(chuàng)新互聯(lián)
文章URL:http://aaarwkj.com/article8/gidop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、外貿(mào)建站、商城網(wǎng)站小程序開發(fā)、靜態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
97超碰国产在线观看| 亚洲欧洲一区二区中文字幕| 偷拍盗摄一区二区三区| 久久激情日本人妻av免费| 午夜毛片免费在线播放| 日韩欧美国产综合一区二区| 丰满高潮少妇在线观看| 成人在线观看av毛片| 小草少妇视频免费看视频| 亚洲国产日韩欧美第一页| 亚洲天堂男人的天堂狠狠操| 最新亚洲国产高清激情| 日韩人妻中文字幕在线视频| 免费av中文字幕电影| 日韩欧美国产精品加勒比| 国产精品粗又长一区| 青青草原成年人免费看| 亚洲成人av福利网站| 国产精品欧美日韩一区| 国产毛片久久久久久国产| 国内一级片内射视频播放| 国产我不卡在线观看免费| av小说亚洲激情乱| 五月婷婷亚洲激情综合网| 外国男人搞亚洲女人在线| 精品国产自在现线拍手机| 亚洲成人午夜激情的三级网| 日本熟妇中文字幕三级久久| 亚洲一区二区三区精品乱码| 一本在线不卡中文字幕| 成年人国产免费在线观看| 国产精品一区二区熟女| 国产成人性生交大片免费| 日韩人妻中文字幕乱码一区| 亚洲欧美一级二级三级| av永久天堂一区二区三区| 国产精品水嫩水嫩粉嫩| 国产毛片精品一区内射| 日韩成人大片在线播放| 日本99精品视频10| 欧美精品欧美激情免费区|