前期提要(?),我有一個發表文章的功能,發表的時候可以選擇文章的類型。
我還有一個主頁,上面會顯示很多筆資料,這些資料來自不同的資料表,而且每種資料只顯示一部分,大多只要最新的資料、或者必須是上架中的資料。
where主要是透過key:value
來進行篩選,在寵物送養那邊,where('launched','上架中')
,表示說,我要先篩選這個資料表裡面,launched欄位的值是上架中,的所有資料。所以不是上架中的都不會被抓出來。
orderbydesc('id')
則是針對id這個欄位進行降冪排序,也就是由大到小依序排下來。
desc
是降冪、asc
是升冪。
不過好像沒有orderbyasc('id')
,我猜是因為正常來講,預設的排序就已經是升冪了,就是說本來排序就是由小到大,所以就沒有這個了。
另一種做法是orderBy('id','desc')
或者orderBy('id','asc')
。
take(8)
就是依順序只取八筆。
latest()
則是以時間來做依據,由時間最近的方式來排序。
如果你想要同時篩選出兩種情況,不可以用where(動物新聞文章)->where(動保法律文章)
,在我這個資料表中,像這樣用會產生衝突,找不到任何資料,要用where(動物新聞文章)->orWhere(動保法律文章)
,就可以把動物新聞跟動保法律都找出來。
上面這些篩選資料的方式,我們一般稱為Query Builder(大概、應該)。
其中這個where()有非常多種延伸變化,幾乎可以說是一個家族,有機會會補充在這一篇。
laravel
laravel.8
Query Builder
資料篩選
where
take
orderby
orderbydesc
first
latest