TP5 1 學習心得

2021-10-08 20:54:15 字數 3986 閱讀 1578

1.模型下 hasone

() 與 belongsto

() 區別

同為一對一關係;

表中有外來鍵時用 belongsto()

表中無外來鍵時用 hasone()

例如:product 模型中

product 表中有 img_id 外來鍵用 belongsto()

img 表中有 product_id 外來鍵用 hasone()

2.get***attr

($value

,$data

) 獲取器

獲取器寫法固定 get + *** + attr

$value 為 *** 欄位的值 $data 為資料庫查詢出這條資料的值

例如:img 表中有 url 字段 值為 123.png

public

function

geturlattr

($value

,$data

)3.with 模型關聯,對關聯的表資料排序

model下

$product

= self:

:with([

'imgs'

,'spec'])

->

find

($id);

現在對 spec 表的 order 字段進行排序

$product

= self:

:with([

'imgs'

,'spec'

=>

function

($query)]

)->

find

($id);

4.with 模型關聯 關聯乙個表中的兩個屬性

關聯 product 模型下的 imgs 和 cover 屬性

public

static

function

getrecommend()

])->

select()

;return

$recommend;}

5.判斷資料集物件是否為空

$list

=collection

($list);

$list

->

isempty()

;//返回true 或 false

6.軟刪除使用
//引入 softdelete

usethink\model\concern\softdelete

;class

collection

extends

basemodel

//查詢資料會自動剔除 delete_time 有值的字段,查詢出有效資料

為了能夠查詢 全部 資料 使用

self:

:withtrashed()

->

select()

恢復被軟刪除的資料 條件查詢出資料 然後恢復

$collection

= self:

:withtrashed()

->

where

('user_id'

,$uid)-

>

where

('product_id'

,$id)-

>

find()

;$collection

->

restore()

;//此時會自動去掉 delete_time 欄位的值

進行軟刪除 delete_time 欄位會自動增加值

model下

self:

:destroy

($collection

['id'])

; 或

self:

:destroy([

'id'

=>

$id]);

或 $collection

= self:

:withtrashed()

->

where

('user_id'

,$uid)-

>

where

('product_id'

,$id)-

>

find()

;$collection

->

delete()

;

7.查詢資料分頁
//paginate(數量, 是否返回總條數及當前頁數, ['page'=>當前頁數])

$category

= self:

:orderraw

("`order` is null || `order` = '' ,`order` asc")-

>

where

('category_name'

,'like'

,'%'

.$name

.'%')-

>

paginate

($size

,false,[

'page'

=>

$page])

;return

$category

;

8.對資料進行排序 字段值為空時排最後面
//orderraw("`order` is null || `order` = '' ,`order` asc")  這裡要判斷 order 字段存在 ''  對varchar轉換int型別排序

//$category = self::orderraw("`order` is null || `order` = '',`order`+0 asc")

//$category = self::orderraw("`order` is null || `order` = '',`order`*1 asc")

$category

= self:

:orderraw

("`order` is null || `order` = '',cast(`order` as signed) asc")-

>

where

('category_name'

,'like'

,'%'

.$name

.'%')-

>

paginate

($size

,false,[

'page'

=>

$page])

;return

$category

;

9.返回資料時修改欄位名,並且關聯查詢
//filed需要在with前面,並且需要傳入關聯欄位id。

public

static

function

getcategorychildren()

public

function

children()

10.引入 ramsey 生成 uuid
//文件

cmd composer require ramsey/uuid

useramsey\uuid\uuid

;class**

*}

10.按月統計數量
public

static

function

getusernumberbymonth()

//加上時間段

public

static

function

getusernumberbymonth()

tp5 1學習之安裝

會自動建立乙個名為tp5的資料夾 可以自己隨意改 prefer dist 表示的是轉殖壓縮包,而不是源 composer create project prefer dist topthink think 5.1.tp5 配置虛擬主機執行tp框架 我這裡推薦用的是xampp,phpstudy感覺很不...

tp5 1框架學習之路由

路由 就是使用者訪問提前規定的控制器和方法,進行業務處理 tp預設提供了兩種路由規則 1.pathinfo模式 2.自定義路由規則模式 推薦 tp5.1的路由定義更加物件化,並且預設開啟路由 不能關閉 如果乙個url沒有定義路由,則預設採用pathinfo模式訪問 路由的相關配置解釋 是否強制使用路...

TP5 1之軟刪除

軟刪除 在實際專案中,對資料頻繁使用刪除操作會導致效能問題,軟刪除的作用就是把資料加上刪除標記,而不是真正的刪除,同時也便於需要的時候進行資料的恢復。軟刪除僅對模型的刪除方法有效,如果直接使用資料庫的刪除方法則無效 1 要使用軟刪除功能,需要引入softdelete。2 deletetime屬性用於...