#267

    作者:广西南宁市青秀区
    tp6 hasOne belongTo区别

    ThinkPHP5有关联模型的操作,
    但有部分初学者对数据表中常见的几种表与表的关系还存在着问题,
    所以使用不好关联查询。

    这里将hasOne、hasMany、belongsTo进行一个详细举例说明。

    首先,这3个的大致中文意思:
    hasOne:有一个,加上主谓语应该是 ,A 有一个 B hasMany:有很多,A 有很多 B belongsTo:属于, A 属于 B
    Run code
    Cut to clipboard


      这里我们准备3张表来理解他们的关系:
      user_group 用户分组表:id、title
      user 用户表:id、user_group_id、username、password
      profile 用户信息表:id、user_id、nickname、sex

      1、user表需要关联user_group表,表示每一个 用户 需要知道该用户是 哪个用户分组的;
      2、profile表 需要关联 用户表,表示该用户信息数据 是哪个用户的信息;

      我们知道一个用户组下面可以有很多用户,
      所以:user_group hasMany user;

      一个用户 属于 一个用户组,
      所以:user belongsTo user_group;

      同样是user_group和user表,但我们出发点不同,关系也就不一样了。


      每个用户都应该有唯一一条用户信息数据,
      所以:user hasOne profile;

      一条用户信息 属于 一个用户,
      所以:profile belongsTo user

      综上:

      在User模型中,我们可以定义关联:
      function user_group(){ return $this->belongsTo('UserGroup'); } function profile(){ return $this->hasOne('Profile'); }
      Run code
      Cut to clipboard


        我们在查询中:
        $user = model('User')->find(); $user = $user->user_group; //这样user中就可以包含当前数据对应的user_grou数据了 $user = $user->profile;//这样user中就可以包含当前数据对应的profile数据了
        Run code
        Cut to clipboard



          在UserGroup模型中,我们可以定义关联:
          function user(){ return $this->hasMany('User'); }
          Run code
          Cut to clipboard


            在Profile模型中,我们可以定义关联:
            function user(){ return $this->belongsTo('User'); }
            Run code
            Cut to clipboard


              注:定义关联function的方法名可以随意定义,一般为表名或模型名;
              我们定义的时候是function,但获取时理解为获取属性,所以不加();

              很多人理解是我定义了一个profile的方法,
              所以应该$user->profile(),这里要特别注意下。

              这样我们在查询时,就方便了,不需要使用大量的join。
              文章:thinkphp6 远程一对一 hansOneThrough 参数解释  发表时间:2021-08-06, 15:52:44  
              展开↯

              #268

              作者:广西桂林市七星区
              15tvah0u4izss
              #,广西桂林市七星区,2021-08-05,20:10:42, 绝地求生登录钥匙:9b7805dbc6b34ba1a03c031889a5a540
              文章:常用html、demo代码  发表时间:2021-08-05, 19:57:11  
              展开↯

              #269

              作者:广西南宁市
              <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <p onclick="ky();">跨域</p> <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"> </script> <script> function ky(){ $.ajax({ type: "POST", url:'http://group.jxttest.com/v1/articles/catsLists', error: function(request) { console.log('失败:'+request); }, success: function(data) { console.log('成功:'+data); } }); } </script>
              Run code
              Cut to clipboard
                文章:常用html、demo代码  发表时间:2021-08-02, 18:33:14  
                展开↯

                #270

                作者:广西南宁市青秀区
                Docker启动不了,提示 Docker failed to initialize

                将 C:\Users\Administrator\AppData\Roaming 目录下Docker目录改名为Docker_backup(实际上就是删除并备份),
                启动 Docker for windows.exe,提示docker没有启动,

                点击启动docker一切恢复如初,原来的容器和镜像都在。
                文章:Docker PHP 例子  发表时间:2021-07-23, 18:10:44  
                展开↯

                #271

                作者:广西南宁市
                Navicat导入sql数据

                mysql 报错[Err] [Dtf] 1292 - Incorrect datetime value: '0000-00-00 00:00:00' for column 'uploadtime' at row 9 With statement:......

                搜索之后发现原来是因为 msyql5.7 及以上不允许时间戳字段插入 ‘0000-00-00’ 数据,
                修复方法也比较简单,去掉sql_model 中的 NO_ZERO_DATE 配置即可

                查看可以执行SQL
                select @@global.sql_mode;
                Run code
                Cut to clipboard



                  修改方法有好几个,

                  最简单的就是执行SQL
                  set @@global.sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
                  Run code
                  Cut to clipboard


                    还有一个修改配置文件
                    vim /etc/my.cf //添加这条数据 sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
                    Run code
                    Cut to clipboard


                      保存退出后重启mysql
                      #,广西南宁市,2021-07-21,17:28:26, mysql 高版本 sql_mode=only_full_group_by 问题解决方法
                      set @@GLOBAL.sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION;
                      Run code
                      Cut to clipboard
                        #,广西南宁市,2021-07-21,17:42:23, 完美解决方案

                        需修改mysql配置文件,
                        通过手动添加sql_mode的方式强制指定不需要ONLY_FULL_GROUP_BY属性,

                        my.cnf位于etc文件夹下,vim下光标移到最后,添加如下:
                        sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
                        Run code
                        Cut to clipboard

                          重启mysql服务
                          文章:Docker PHP 例子  发表时间:2021-07-21, 17:20:12  
                          展开↯

                          #272

                          作者:广西南宁市

                          SQLSTATE[HY000] [2002] Connection refused

                          使用docker搭建lnmp环境,使用的是分容器的搭建方案

                          框架使用thinkphp,想要连接数据MySQL,一直显示“SQLSTATE[HY000] [2002] Connection refused”

                          数据库配置host填的是localhost,后面改成了127.0.0.1,都是连接不了

                          还以为是数据库用户权限问题,
                          新建了一个用户,刷新了权限,结果还是不行

                          想了好久,原来都是分容器的问题,
                          由于采用了分容器的搭建方案,

                          在php的容器内连接127.0.0.1或者localhost,肯定是连接不了数据库MySQL的

                          应该把数据库配置host填成MySQL容器名称,

                          我本地的MySQL容器名称为mysql,
                          改成这样就可以连接

                          <?php return [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => 'mysql', // 数据库名 'database' => 'jxt', // 用户名 'username' => 'root', // 密码 'password' => '123456', // 端口 'hostport' => '3306',
                          Run code
                          Cut to clipboard

                            文章:Docker PHP 例子  发表时间:2021-07-21, 17:26:29  
                            展开↯

                            #273

                            作者:广西南宁市
                            宝塔 thinkPHP5 nginx 站点配置 伪静态
                            location / { if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s=$1 last; break; } }
                            Run code
                            Cut to clipboard


                              tp3.2 nginx 伪静态
                              location / { if (!-e $request_filename) { rewrite ^/index.php(.*)$ /index.php?s=$1 last; rewrite ^(.*)$ /index.php?s=$1 last; #rewrite ^(.*)$ /index.php$1 break; break; } }
                              Run code
                              Cut to clipboard
                                #,广西南宁市,2021-07-21,17:22:50,
                                server { listen 80; server_name tp tp.com tp.net tp.org www.tp.com www.tp.net www.tp.org; root /www/root/develop/tp/Public; charset UTF-8; location / { if (!-e $request_filename){ rewrite ^/(.*)$ /index.php?s=/$1 last; } index index.php; } include php; include error; }
                                Run code
                                Cut to clipboard
                                  文章:nginx docker 代理  发表时间:2021-07-21, 17:21:37  
                                  展开↯

                                  #274

                                  作者:广西南宁市
                                  Docker

                                  进入数据库内部
                                  mysql -u root -p book
                                  Run code
                                  Cut to clipboard
                                    ,我这里数据库名为book
                                    查看当前字符集
                                    show variables like '%character%';
                                    Run code
                                    Cut to clipboard
                                      #,广西南宁市,2021-07-21,17:17:03, Mysql:[Err] 1292 - Incorrect datetime value: .date(Y-m-d h:i:s)...解决方案
                                      解决方法:

                                      修改my.ini配置文件

                                      my.ini中查找sql-mode

                                      我的MySQL版本为Server version: 5.6.47 MySQL Community Server (GPL)
                                      默认为:sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

                                      将STRICT_TRANS_TABLES,删掉保存重启mysql

                                      如果版本高的话默认可能是:
                                      sql_mode="STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER

                                      NO_ZERO_DATE,NO_ZERO_IN_DATE,删掉保存重启mysql即可
                                      文章:Docker PHP 例子  发表时间:2021-07-21, 17:14:43  
                                      展开↯

                                      #275

                                      作者:广西南宁市
                                      异常:在执行一段SQL时出现以下问题

                                      [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column ‘information_schema.PROFILING.SEQ’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

                                      分析:
                                      根据异常信息分析能发现,这个问题主要是由于sql_mode引起,所以先查看sql_mode后修改即可,主要是去除only_full_group_by

                                      解决方案:

                                      方案一:只修改当前数据库的SQL_MODE

                                      -- 查看SQL_MODE
                                      SELECT @@sql_mode;
                                      Run code
                                      Cut to clipboard


                                        -- 修改SQL_MODE
                                        SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
                                        Run code
                                        Cut to clipboard


                                          方案二:修改配置文件my.ini

                                          -- 查看数据库的存储地址
                                          SELECT @@datadir -- D:\MySQL\mysql-5.7.17-winx64\data\
                                          Run code
                                          Cut to clipboard


                                            打开对应的地址,找到my.ini,添加
                                            [mysql] sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
                                            Run code
                                            Cut to clipboard



                                              展开↯

                                              #276

                                              作者:广西南宁市
                                              【PhpStorm】为不同的项目启用不同的Code Style配置

                                              因为公司不同项目采用了不同的代码规范,而且彼此不兼容,为了方便同事开发,
                                              将不同项目的PhpStorm Code Style配置以文件方式落地存储并提交代码库,方便共享和维护。

                                              操作方式:
                                              PhpStorm Menu > Preferences... > Editor > Code Style,
                                              右侧 Scheme选择Project,这时可以点击右侧的Set from...引入现成的配置,也可以手动调整配置,完成后退出
                                              项目根目录下的 .idea/codeStyleSettings.xml文件提交到代码库即可
                                              以上两步重复在不同的项目中操作,即可将不同项目配置分别提交到对应代码库,
                                              同事拉去后即可在不同代码库启用不同的Code Style配置了
                                              文章:VScode使用PHPStorm格式化代码  发表时间:2021-07-20, 17:08:46  
                                              展开↯

                                              #277

                                              作者:广西南宁市
                                              VSCode安装插件后VsCode和PHPStorm编辑器IDE只能用一个格式化代码
                                              #,广西南宁市,2021-07-20,17:07:04,
                                              Assignment sign on next line PhpStorm在新行上禁用格式化数组初始化
                                              Run code
                                              Cut to clipboard
                                                文章:VScode使用PHPStorm格式化代码  发表时间:2021-07-20, 17:05:38  
                                                展开↯

                                                #278

                                                作者:广西南宁市
                                                Docker 安装 Nginx 并个性化挂载配置文件 nginx.conf
                                                # 普通的挂载方式 docker run --name mynginx2 --mount source=/var/www,target==/usr/share/nginx/html,readonly \ --mount source=/var/nginx/conf,target=/etc/nginx/conf,readonly -p 80:80 -d nginx
                                                Run code
                                                Cut to clipboard
                                                  文章:nginx docker 代理  发表时间:2021-07-19, 17:32:06  
                                                  展开↯

                                                  #279

                                                  作者:广西南宁市
                                                  Docker 部署Nginx 并且挂载默认请求路径和配置文件
                                                  镜像中nginx.conf配置文件路径 /etc/nginx/nginx.conf default.conf配置文件的路径 /etc/nginx/conf.d/default.conf 默认首页文件夹html路径 /usr/share/nginx/html 日志文件路径 /var/log/nginx
                                                  Run code
                                                  Cut to clipboard
                                                    文章:nginx docker 代理  发表时间:2021-07-19, 17:28:27  
                                                    展开↯

                                                    #280

                                                    作者:广西南宁市
                                                    文章:nginx docker 代理  发表时间:2021-07-19, 17:25:27  
                                                    展开↯

                                                    #281

                                                    作者:广西南宁市青秀区
                                                    Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Folder\shell\CMD\command] @="cmd.exe /k cd %l"
                                                    Run code
                                                    Cut to clipboard
                                                      文章:Win10添加右键在此处打开命令行  发表时间:2021-07-14, 09:16:57  
                                                      展开↯

                                                      #282

                                                      作者:广西南宁市青秀区
                                                      Windows右键添加cmd命令提示符快捷方式的两种方法

                                                      第一种:shift+右键
                                                      这个最方便了,随时随地直接从当前目录进入cmd终端。

                                                      第二种:注册表方式添加
                                                      1、win+R进入运行终端
                                                      2、
                                                      code
                                                      Run code
                                                      Cut to clipboard
                                                        进入注册表
                                                        3、依次进入
                                                        HKEY_CLASSES_ROOT\Folder\shell
                                                        Run code
                                                        Cut to clipboard

                                                          4、在shell右键新建子项命名“命令提示符”(也可以其他名字)
                                                          5、在“命令提示符”右键新建子项“
                                                          command
                                                          Run code
                                                          Cut to clipboard

                                                            6、右边双击默认,在数值数据中输入
                                                            C:\Windows\System32\cmd.exe cd "%1"
                                                            Run code
                                                            Cut to clipboard
                                                              保存,关闭注册表。
                                                              7、在文件夹上右键会出现命令提示符功能啦!
                                                              文章:Win10添加右键在此处打开命令行  发表时间:2021-07-14, 09:15:45  
                                                              展开↯

                                                              #283

                                                              作者:香港
                                                              test
                                                              #,广西-南宁-中国电信,2021-07-04,07:03:34,
                                                              文章:日本爱情片常见题材  发表时间:2021-07-04, 01:49:48  
                                                              展开↯

                                                              #284

                                                              作者:广西-南宁-中国电信
                                                              php curl获取到json对象并转成数组array的方法
                                                              function objtoarr($obj){ $ret = array(); foreach($obj as $key =>$value){ if(gettype($value) == 'array' || gettype($value) == 'object'){ $ret[$key] = objtoarr($value); }else{ $ret[$key] = $value; } } return $ret; } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,'http://www.tudou.com/albumcover/albumdata/getAlbumItems.html?acode=pEFBZGfERLo&charset=utf-8'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_ENCODING, "gzip"); $output = curl_exec($ch); curl_close($ch); $content = json_decode($output); $content_arr = objtoarr($content); var_dump($content_arr);
                                                              Run code
                                                              Cut to clipboard
                                                                #,广西-南宁-中国电信,2021-07-04,07:02:01,
                                                                $content = json_decode($output);
                                                                Run code
                                                                Cut to clipboard
                                                                  文章:PHP根据经纬度,计算2点之间的距离的2种方法  发表时间:2021-07-04, 07:01:11  
                                                                  展开↯

                                                                  #285

                                                                  作者:广西-南宁-中国电信
                                                                  php代码将ipv6地址转为ipv4地址
                                                                  $ipv6 = '2a01:4f8:190:4413::2'; $ipv4 = hexdec(substr($ipv6, 0, 2)). "." . hexdec(substr($ipv6, 2, 2)). "." . hexdec(substr($ipv6, 5, 2)). "." . hexdec(substr($ipv6, 7, 2)); echo $ipv4;
                                                                  Run code
                                                                  Cut to clipboard
                                                                    文章:PHP根据经纬度,计算2点之间的距离的2种方法  发表时间:2021-07-04, 07:01:34  
                                                                    展开↯
                                                                    你好,残忍屏蔽广告

                                                                    确定要清除编辑框内容吗?

                                                                    该删除操作将不可恢复。

                                                                    删除 取消

                                                                    激活Windows

                                                                    转到"设置"以激活Windows。