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();