PHP开发PHP经验分享

thinkphp开发手册(完整本)笔记

2021-02-02  本文已影响0人  一一秋风

待更新

参考手册

[ThinkPHP6.0完全开发手册 官方] (https://www.kancloud.cn/manual/thinkphp6_0/)

[thinkPHp6.0快速开发手册(案例版)] (https://www.php.cn/course/1049.html)

PHP implode() 或者json():数组转字符串

implode($glue, $array) 或者 implode($array)
其中,$glue 用来设置一个字符串,表示使用 $glue 将数组每个元素连接在一起,默认情况下 $glue 为空字符串;$array 为需要转换的数组。
json的性能相对来说比implode要好,详见谷歌

PHP的foreach语法

PHP的数组是有key value的键值对的,完整的写法如下:

<?php
$myBook = array( "title" =>  "Learn PHP from www.w3cschool.cn", 
                "author" =>  "www.w3cschool.cn", 
                "pubYear" =>  2000 ); 

foreach ( $myBook as $key =>  $value ) { 
   echo "$key  \n"; 
   echo "$value \n"; 
} 
?>

模型获取器

<?php

namespace app\common\model;
use app\api\redisCache\UserCache;
use app\common\lib\Singleton;

class UserModel extends BaseModel
{
    use Singleton;
    protected $name = 'user';//定义数据表的名称,不含前后缀

    public function getStatusAttr($value)
    {
        $status = [-1=>'删除',0=>'禁用',1=>'正常',2=>'待审核'];
        return $status[$value];
    }

    public function getStatusTextAttr($value,$data)
    {
         //$data这儿指的是UserModel::find(12);查询出来的数据
        $status = [-1=>'删除',0=>'禁用',1=>'正常',2=>'待审核'];
        return $status[$data['status']];
    }

    public function  addUser()
    {
      $user = UserModel::find(12);
      echo $user->status_text; // 例如输出“正常”
    }
}

当用模型获取器定义了status时候,要获取数据表中的原始数据,可以使用:

$user = User::find(1);
// 通过获取器获取字段
echo $user->status;
// 获取原始字段数据
echo $user->getData('status');
// 获取全部原始数据
dump($user->getData());

动态获取器
可以支持对模型使用动态获取器,无需在模型类中定义获取器方法。

User::withAttr('name', function($value, $data) {
    return strtolower($value);
})->select();

这儿需要注意到在实际测试过程中,没有效果,经过改动

User::select()->withAttr('name', function($value, $data) {
    return strtolower($value);
});

模型修改器

如果你需要在修改器中修改其它数据,可以使用

   public function setTestFieldAttr($value, $data)
    {
        $this->set('other_field', $data['some_field']);
        //不返回就是test_field为空
    }

修改器方法仅对模型的写入方法有效,调用数据库的写入方法写入无效,例如下面的方式修改器无效。

# 无效
$user = new User();
$data['name'] = 'THINKPHP';
$data['email'] = 'thinkphp@qq.com';
$user->insert($data);

# 有效
$user = new User();
$data['name'] = 'THINKPHP';
$data['email'] = 'thinkphp@qq.com';
$user->save($data);
echo $user->name; // thinkphp

模型搜索器

 public function searchNameAttr($query, $value, $data)
    {
        // $query就是模型实例
        $query->where('name','like', $value . '%');
        if (isset($data['sort'])) {
            $query->order($data['sort']);
        }        
    }

然后,我们可以使用下面的查询

User::withSearch(['name','create_time', 'status'], [
        'name'          =>  'think',
        'create_time'   =>  ['2018-8-1','2018-8-5'],
        'status'        =>  1,
        'sort'          =>  ['status'=>'desc'],
    ])
    ->select();
上一篇下一篇

猜你喜欢

热点阅读