Laravel模型的一些小技巧


隱藏字段

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

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

構建讀取器

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

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

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

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

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

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM