1. 程式人生 > >Laravel模型的一些小技巧

Laravel模型的一些小技巧

傳統 產品 來源 這才 弊端 獲取 接收 圖片路徑 spa

隱藏字段

我在項目遇到的情景是,當使用關聯模型獲取數據的時候,比如產品模型和圖片模型,通過產品模型來關聯圖片模型,這個時候我只需要圖片模型的圖片地址字段,其他的字段不讓產品模型看到;以這個場景為實例,我們通過代碼實現

技術分享圖片

我們發現上圖紅色框裏的內容,你不想顯示其他字段,就在hidden數組裏填寫目標字段,這樣寫的一個弊端,其他模型在調用圖片模型的時候,這些字段也不會顯示,他是全局的。

構建讀取器

我們為什麽要創建讀取器?我們在我們正常的業務中,比如要修改我們讀取字段數據,我們傳統的做法是將數據獲取出來,在對數據進行修改。現在有了讀取器我們沒有必要這樣做,我們在業務邏輯裏面只針對數據,不去處理數據。laravel給我們提供了方便

技術分享圖片

由上圖紅色的框裏的內容所示,比如我們修改圖片的路徑,圖片路徑的字段img_url,這個時候構造器函數的聲明是getImgUrlAttribute,註意後面必須跟Attribute這是laravel的規定,函數裏面的$value就是當前字段的值,你就可以對值進行修改。還有就是我們也可以其他字段值來動態修改當前字段的值

技術分享圖片

當from的字段為1的時後我們這才修改圖片的路徑,註意:這些字段和值的來源是,當我們調用模型的時候,模型會自動將我們數據表的字段和值獲取出來,構造器修改字段的值也是全局的,在任何一個關聯模型都可以用。

關聯模型可以對所關聯模型的值進行改變

這句話可能聽起來有點繞,我來解釋一下。我通過一個場景進行解釋,比如我們經常看到的商品詳情,它裏面介紹大多數以圖片的形式展示,這些圖片再添加的時候是隨便傳的,這個時候圖片後面有一個排序字段,如果你不按照排序字段進行排序,你所獲取的圖片是亂的,介紹都是亂的。這個時候我們通過關聯模型將圖片模型的數據進行排序組裝,按照我們想要的格式返回。

技術分享圖片

laravel將關聯模型的數據拼接到當前模型數據的後面是通過with函數,with可以接收一個數組技術分享圖片,數組裏面的就是關聯模型的函數,比如一對一關聯函數,我們可以通過‘.’的方式來獲取關聯模型他所關聯的模型,

技術分享圖片

也就是這樣獲取技術分享圖片,我們要改變模型裏面的值,我們就要在with函數裏面寫一個匿名函數來處理模型的數據,查詢構造器

技術分享圖片

Laravel模型的一些小技巧