# 軟刪除和追加字段
```
~~~
protected $name ='web_page_single';
use SoftDelete;
protected $defaultSoftDelete = null;
protected $append = [
'status_text'
];
// 狀態
const IS_STATUS = [
'2' => '關閉',
'1' => '開啟',
];
~~~
```
# 設定屬性 獲取和設定
```
~~~
public function getStatusTextAttr($value, $data): string
{
if (!isset($data['status'])) return '';
return self::IS_STATUS[$data['status']] ?? $data['status'];
}
~~~
public function getStatusTextAttr($value, $data): string
{
if (!isset($data['status'])) return '';
return self::IS_STATUS[$data['status']] ?? $data['status'];
}
public function getTypeTextAttr($value, $data): string
{
if (!isset($data['type'])) return '';
return self::IS_TYPE[$data['type']] ?? $data['type'];
}
------------------------------------------------------------------------
~~~
protected function setShowTimeAttr($value)
{
if($value != 0){
return strtotime($value);
}else{
return $value;
}
}
~~~
```
# 模型關聯查詢數據
~~~
$query = (new UserCommissionLog)->alias('c')->where(['customer_id' => config('sys.platform_id')])
// 收益類型 金額 賬戶余額 粉絲手機號 時間 來源 狀態 應用類型
->field('c.id, c.user_id, c.user_grade, c.amount, c.after_amount, c.create_time, c.order_type, c.status, c.app_type')
->whereIn('c.user_id', $user_ids)
->when(key_exists('status', $params), function (Query $query) use ($params) {
$query->where(['c.status' => $params['status']]);
})
->when(key_exists('user_grade', $params), function (Query $query) use ($params) {
$query->where(['c.user_grade' => $params['user_grade']]);
})
->when(key_exists('create_time', $params), function (Query $query) use ($params) {
$tmpTime = explode(' - ', $params['create_time']);
$query->whereBetween('c.create_time', [@$tmpTime[0], @$tmpTime[1]]);
})
->when(key_exists('mobile', $params), function (Query $query) use ($params) {
$query->leftJoin('user u', 'u.id=c.user_id')->where(['u.mobile' => $params['mobile']]);
})
->with(['user' => function(Query $query) {
$query->field('id, mobile');
}])
->order('c.id desc')->paginate($this->limit);
~~~
# 模型關聯
```
~~~
$data = $this->model->where(['id' => $id])
->field('id, order_no, status, user_id, create_time, pay_time, pay_type, deliver_time, express_no, username, mobile, province, city, area, location, remarks, service_remarks')
->where(['customer_id' => config('sys.platform_id')])
->with(['user' => function (Query $query) {
$query->field('id, nickname, mobile');
}, 'order_details' => function (Query $query) {
$query->field('goods_order_id, goods_image, goods_name, goods_code, goods_price, goods_num, goods_total_price, discount_price, freight_price, goods_total_price, real_price');
}])
->find();
~~~
~~~
public function user(): HasOne
{
return $this->hasOne(User::class, 'id', 'user_id');
}
public function orderDetails(): HasMany
{
return $this->hasMany(GoodsOrderDetail::class, 'goods_order_id');
}
~~~
```
- tp5圖片上傳
- 文件上傳到七牛云
- 上傳到阿里云
- 富文本編輯器
- phpexcel和spreadsheet
- phpexcel導出
- phpexcel導入
- spreadsheet
- tp5_api接口
- 跨域請求
- JWT
- 圖片和視頻上傳接口
- 驗證碼
- tp5小程序登錄
- tp5小程序支付
- tp5基礎架構
- 驗證層
- 模型層Model
- 控制器構找
- tp5.0支付寶
- 海報二維碼
- 輪播圖
- echarts柱狀圖
- layui的圖片彈窗
- p標簽顯示指定行數(全部)
- jquery和layerdate調用日期
- ajax發送文件和圖片的坑啊
- JS日期點擊上一天和下一天
- 百度分享js
- POST請求
- 商品數據表
- tp5.0支付寶最全
- tp5路由的坑
- 二維數組排序
- tp5模型分組group錯誤
- 二維變一維數組
- 無限樹形結構
- json對象轉數組
- 模型關聯查詢
- tp5的模型獲取器和字段設定
- 經緯度獲取距離排序