WebStorm 遇到的问题总结
最近自己WebStorm用得多一点了
和android studio一样,同样是IDEA的ide(记得自己还是eclipse的时候,原来同事很早就开始用IDEA了,记得6-7年前就有了)
自己记录下自己遇到的问题
这里先感谢帮助自己的后台伙伴们
提示代码不显示
写php的时候,不提示代码
这样很头痛
查了下,是 【节电模式】也就是【Power Save Mode】
(台式,就别省电了)
打开后, 就可以正常提示了
汉化的phpstorm,设置打不开
自己使用的版本是汉化的
对应的插件也是安装好的
自己想做一些自定义操作,但是打不开设置很麻烦
百度了一下,说是汉化包的问题
通常idea的插件,都是在lib下面
找了下,发现resources_cn.jar
这个文件
自己删除后(当然,也可以移到别的地方,万一要汉化的时候,还可以恢复)
再次打开,就可以了
微信小程序,wxss代码不提示
phpstorm还是挺智能的
但是,对微信小程序不是很友好(其实,感觉很多方面还是挺简单的,慢慢工具多了,开发会更简单,到时候肯定不值钱了)
其实, 微信的wxss感觉就是css,只是由于文件名不一样,没有关联而已
这个时候,我们只需要把问下的wxss文件,关联成css文件,即:
我们关联了对应的css文件后
就可以看见对应的css提示了
微信小程序,wxml代码不提示
和上面同理,只需要把wxml添加到xml的类型中即可
设置完以后,就可以简单使用了
数据表之间是纵横交叉、相互关联的,laravel的一对一,一对多比较好理解,本文重点通过实例给大家讲解 laravel中的多对多关系,感兴趣的朋友一起看看吧数据表之间是纵横交叉、相互关联的,laravel的一对一,一对多比较好理解,官网介绍滴很详细了,在此我就不赘述啦,重点我记下多对多的关系
一种常见的关联关系是多对多,即表A的某条记录通过中间表C与表B的多条记录关联,反之亦然。比如一个用户有多种角色,反之一个角色对应多个用户。
为了测试该关联关系,我们沿用官网的用户角色示例:
需要三张数据表:users、roles 和 role_user,role_user 表按照关联模型名的字母顺序命名(这里role_user是中间表),并且包含 user_id 和 role_id两个列。
多对多关联通过编写返回 belongsToMany 方法返回结果的方法来定义。废话不说多,直接上数据结构:
1:创建一个角色表roles,并添加一些初始化数据:
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structureforusers
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`password` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
`remember_token` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT-00-00 00:00:00',
PRIMARY KEY (`id`),
UNIQUE KEY `users_email_unique` (`email`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- ----------------------------
-- Records of users
-- ----------------------------
INSERT INTO `users` VALUES (Ƈ','admin','admin@163.com','$2y$10$J/yXqscucanrHAGZp9G6..Tu1Md.SOljX3M8WrHsUdrgat4zeSuhC','ilocXtjZJwhrmIdLG1cKOYegeCwQCkuyx1pYAOLuzY2PpScQFT5Ss7lBCi7i',-04-21 16:26:23',-12-14 09:29:59');
INSERT INTO `users` VALUES (ƈ','baidu',�@qq.com','$2y$10$2A5zJ4pnJ5uCp1DN3NX.5uj/Ap7P6O4nP2BaA55aFra8/rti1K6I2', null,-04-22 06:48:10',-04-22 06:48:10');
INSERT INTO `users` VALUES (Ɖ','fantasy',@qq.com','', null,-06-14 10:38:57',-06-15 10:39:01');
2:创建一个角色表roles,并添加一些初始化数据:
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structureforroles
-- ----------------------------
DROP TABLE IF EXISTS `roles`;
CREATE TABLE `roles` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- ----------------------------
-- Records of roles
-- ----------------------------
INSERT INTO `roles` VALUES (Ƈ','超级版主',-04-21 16:26:23',-12-14 09:29:59');
INSERT INTO `roles` VALUES (ƈ','司令',-04-22 06:48:10',-04-22 06:48:10');
INSERT INTO `roles` VALUES (Ɖ','军长',-06-14 10:38:57',-06-15 10:39:01');
INSERT INTO `roles` VALUES (Ɗ','司长',-06-07 10:41:41',-06-15 10:41:51');
INSERT INTO `roles` VALUES (Ƌ','团战',-06-22 10:41:44',-06-28 10:41:54');
INSERT INTO `roles` VALUES (ƌ','小兵',-06-22 10:41:47',-06-22 10:41:56');
3:创建一个中间表role_user用于记录users表与roles表的对应关系,并添加一些初始化数据:
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structureforrole_user
-- ----------------------------
DROP TABLE IF EXISTS `role_user`;
CREATE TABLE `role_user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) DEFAULT NULL,
`role_id` int(11) DEFAULT NULL,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;
-- ----------------------------
-- Records of role_user
-- ----------------------------
INSERT INTO `role_user` VALUES (Ƈ',Ƈ',ƈ',-06-07 11:42:13',-06-21 11:32:16');
INSERT INTO `role_user` VALUES (ƈ',Ƈ',Ɖ',-06-07 11:32:13',-06-07 11:22:13');
INSERT INTO `role_user` VALUES (Ɖ',ƈ',Ɗ',-06-07 11:32:13',-06-07 11:12:13');
INSERT INTO `role_user` VALUES (Ɗ',Ƈ',Ƌ',-06-07 11:32:13',-06-07 11:22:13');
INSERT INTO `role_user` VALUES (Ƌ',Ɖ',ƌ',-06-07 11:32:13',-06-07 11:52:13');
INSERT INTO `role_user` VALUES (ƌ',Ɖ',ƈ',-06-07 11:32:13',-06-07 11:42:13');
INSERT INTO `role_user` VALUES (ƍ',ƈ',ƈ',-06-07 11:42:13',-06-07 11:52:13');
注意我们定义中间表的时候没有在结尾加s并且命名规则是按照字母表顺序,将role放在前面,user放在后面,并且用_分隔,这一切都是为了适应Eloquent模型关联的默认设置:在定义多对多关联的时候如果没有指定中间表,Eloquent默认的中间表使用这种规则拼接出来。
创建一个Role模型:
<?php
namespaceApp\Models;
useIlluminate\Database\Eloquent\Model;
/**
* Class Role
* @package App\Models
* @mixin \Eloquent
*/
classRoleextendsModel
{
}
然后我们在 User 模型上定义 roles 方法:
<?php
namespaceApp\Models;
useIlluminate\Database\Eloquent\Model;
/**
* Class User
* @package App\Models
* @mixin \Eloquent
*/
classUserextendsModel
{
/**
* 用户角色
*/
publicfunctionroles()
{
return$this->belongsToMany('App\Models\Role');
}
}
注:正如我们上面提到的,如果中间表不是role_user,那么需要将中间表作为第二个参数传入belongsToMany方法,如果中间表中的字段不是user_id和role_id,这里我们姑且将其命名为$user_id和$role_id,那么需要将$user_id作为第三个参数传入该方法,$role_id作为第四个参数传入该方法,如果关联方法名不是roles还可以将对应的关联方法名作为第五个参数传入该方法。
接下来我们在控制器中编写测试代码:
<?php
$user= User::find(1);
$roles=$user->roles;
echo'用户'.$user->name.'所拥有的角色:'
foreach($rolesas$role)
echo$role->name.' '//对应输出为:用户admin所拥有的角色:司令 军长 团战
当然,和所有其它关联关系类型一样,你可以调用roles 方法来添加条件约束到关联查询上:
User::find(1)->roles()->orderBy('name')->get();
正如前面所提到的,为了确定关联关系连接表的表名,Eloquent 以字母顺序连接两个关联模型的名字。不过,你可以重写这种约定 —— 通过传递第二个参数到 belongsToMany 方法:
return$this->belongsToMany('App\Models\Role','user_roles');
除了自定义连接表的表名,你还可以通过传递额外参数到 belongsToMany 方法来自定义该表中字段的列名。第三个参数是你定义关联关系模型的外键名称,第四个参数你要连接到的模型的外键名称:
return$this->belongsToMany('App\Models\Role','user_roles','user_id','role_id');
定义相对的关联关系
要定义与多对多关联相对的关联关系,只需在关联模型中调用一下 belongsToMany 方法即可。我们在 Role 模型中定义 users 方法:
<?php
namespaceApp\Models;
useIlluminate\Database\Eloquent\Model;
/**
* Class Role
* @package App\Models
* @mixin \Eloquent
*/
classRoleextendsModel
{
/**
* 角色用户
*/
publicfunctionusers()
{
return$this->belongsToMany('App\Models\User');
}
}
正如你所看到的,定义的关联关系和与其对应的User 中定义的一模一样,只是前者引用 App\Models\Role,后者引用App\Models\User,由于我们再次使用了 belongsToMany 方法,所有的常用表和键自定义选项在定义与多对多相对的关联关系时都是可用的。
测试代码如下:
$role= Role::find(2);
$users=$role->users;
echo'角色#'.$role->name.'下面的用户:'
foreach($usersas$user)
echo$user->name.' '//对应输出为:角色#司令下面的用户:admin fantasy baidu
正如你看到的,处理多对多关联要求一个中间表。Eloquent 提供了一些有用的方法来与这个中间表进行交互,例如,我们假设 User 对象有很多与之关联的 Role 对象,访问这些关联关系之后,我们可以使用这些模型上的pivot 属性访问中间表字段:
$roles= User::find(1)->roles;
foreach($rolesas$role)
echo$role->pivot->role_id.'
'//对应输出为:2 3 5
注意我们获取到的每一个 Role 模型都被自动赋上了 pivot 属性。该属性包含一个代表中间表的模型,并且可以像其它 Eloquent 模型一样使用。
默认情况下,只有模型主键才能用在 pivot 对象上,如果你的 pivot 表包含额外的属性,必须在定义关联关系时进行指定:
return$this->belongsToMany('App\Models\Role')->withPivot('column1','column2');
比如我们修改role_user表增加一个字段 username 数据如下:
修改模型User:
<?php
namespaceApp\Models;
useIlluminate\Database\Eloquent\Model;
/**
* Class User
* @package App\Models
* @mixin \Eloquent
*/
classUserextendsModel
{
/**
* 用户角色
*/
publicfunctionroles()
{
//return $this->belongsToMany('App\Models\Role');
return$this->belongsToMany('App\Models\Role')->withPivot('username');
}
}
测试代码如下:
$user= User::find(1);
foreach($user->rolesas$role)
echo$role->pivot->username;//对应输出为:马特马特2马特3
如果你想要你的 pivot 表自动包含created_at 和 updated_at 时间戳,在关联关系定义时使用 withTimestamps 方法:
return$this->belongsToMany('App\Models\Role')->withTimestamps();
通过中间表字段过滤关联关系
你还可以在定义关联关系的时候使用 wherePivot 和 wherePivotIn 方法过滤belongsToMany 返回的结果集:
return$this->belongsToMany('App\Models\Role')->withPivot('username')->wherePivot('username','马特2');
//return $this->belongsToMany('App\Models\Role')->wherePivotIn('role_id', [1, 2]);
测试代码如下:
$user= User::find(1);
print_r($user->roles->toArray());
以上对应输出:
Array
(
[0] => Array
(
[id] => 3
[name] => 军长
[created_at] => 2017-06-14 10:38:57
[updated_at] => 2017-06-15 10:39:01
[pivot] => Array
(
[user_id] => 1
[role_id] => 3
[username] => 马特2
)
)
)
如果你想要你的pivot表自动包含created_at和updated_at时间戳,在关联关系定义时使用withTimestamps方法:
return$this->belongsToMany('App\Models\Role')->withTimestamps();
以上所述是小编给大家介绍的PHP laravel中的多对多关系实例详解,希望对大家有所帮助。
这篇文章主要介绍了PHP简单获取随机数的方法,结合实例形式分析了php实现指定范围随机数与指定字符序列随机数的简单实现技巧,需要的朋友可以参考下本文实例讲述了PHP简单获取随机数的常用方法。分享给大家供大家参考,具体如下:
1.直接获取从min-max的数,例如1-20:
代码如下 | 复制代码 |
$randnum= mt_rand(1, 20); |
2.在一个数组里面随机选择一个(验证码的时候需要字母、数字混合的情况)
代码如下 | 复制代码 |
functionrandUid(){ $str="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20";//要显示的字符,可自己进行增删 $list=explode(",",$str); $cmax=count($list) - 1; $randnum= mt_rand(0,$cmax); $uid=$list[$randnum]; } |
希望本文所述对大家PHP程序设计有所帮助。
本文介绍了php 截取GBK文档某个位置开始的n个字符方法,非常实用,有兴趣的同学可以参考一下本文cut.php:
代码如下 | 复制代码 |
#!/usr/bin/php <?php define('INPUT_FILE','t.txt'); define('OUTPUT_FILE','a.txt'); $pos= max(intval($argv[1]), 0); $len= max(intval($argv[2]), 0); $file_size=filesize(INPUT_FILE); if($pos>=$file_size)exit; $fp=fopen(INPUT_FILE,'rb'); $point= 0;//current byte position $string='' while(ftell($fp) <$file_size) { if($point>=$pos+$len)break;$byte=fread($fp, 1); //php version >= 5.4 $char= unpack('C',$byte)[1]; if($char<= 0x7f) { //single byte if($point>=$pos)$string.=$byte; $point+= 1; continue; }else{ //double bytes if($point>=$pos) { $string.=$byte.fread($fp, 1); }else{ fseek($fp, 1, SEEK_CUR); } $point+= 1; continue; } } fclose($fp); file_put_contents(OUTPUT_FILE,$string); ?> |
源文件t.txt内容:
dkei20王nnso
测试命令:
./cut.php 6 1
查看结果:
hexdump -C t.txt && hexdump -C a.txt
相关文章
PHP传值到不同页面的三种常见方式及php和html之间传值问题
在项目开发中经常见到不同页面之间传值在web工作中,本篇文章给大家列出了三种常见的方式。接触PHP也有几个月了,本文总结一下这段日子中,在编程过程里常用的3种不同页面传值方法,希望可以给大家参考。有什么意见也希望大...2015-11-24- js修改input的type属性有些限制。当input元素还未插入文档流之前,是可以修改它的值的,在ie和ff下都没问题。但如果input已经存在于页面,其type属性在ie下就成了只读属性了,不可以修改。...2013-10-19
- 这篇文章主要介绍了WebStorm无法正确识别Vue3组合式API的解决方案,帮助大家更好的理解和学习使用vue框架,感兴趣的朋友可以了解下...2021-02-18
- 1,utf8_bin跟utf8_general_ci的区别 ci是 case insensitive, 即 "大小写不敏感", a 和 A 会在字符判断中会被当做一样的; bin 是二进制, a 和 A 会别区别对待. 例如你运行: SELECT * FROM table WHERE txt = 'a'...2013-10-04
- 一、1 CREATE TABLE NAME(name VARCHAR(10)); 对这个表,缺省情况下,下面两个查询的结果是一样的:复制代码 代码如下: SELECT * FROM TABLE NAME WHERE name='clip'; SELECT * FROM TABLE NAME WH...2015-03-15
- 一.mysql默认不支持中文,它的server和db默认是latin1编码.所以我们要将其改变为utf-8编码,因为utf-8包含了地球上大部分语言的二进制编码 1.关闭mysql服务 sudo /etc/init.d/mysql stop 2.修改mysql配置文件 mysql配...2015-10-21
- 这篇文章主要介绍了使用队列(Queue)解决简单的并发问题,讲解的很细致,喜欢的朋友们可以了解一下...2020-06-25
- 2015年7月29日0点起,Windows 10推送全面开启,Windows7、Windows8.1用户可以免费升级到Windows 10,用户也可以通过系统升级到Windows10,在这过程中,用户会遇到这样那样的问题,下面小编总结了windows 10 安装和使用中5个常见问题,需要的朋友可以参考下...2016-01-27
- PHP的session功能,一直为许多的初学者为难。就连有些老手,有时都被搞得莫名其妙。本文,将这些问题,做一个简单的汇总,以便大家查阅。 1. 错误提示 引用 代...2016-11-25
- 回调函数被认为是一种高级函数,一种被作为参数传递给另一个函数(在这称作"otherFunction")的高级函数,回调函数会在otherFunction内被调用(或执行)。回调函数的本质是一种模式(一种解决常见问题的模式),因此回调函数也被称为回调模式。...2016-04-25
- 这篇文章主要为大家详细介绍了WebStorm 11.0.4安装图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-09-22
json error: Use of overloaded operator [] is ambiguous错误的解决方法
今天小编就为大家分享一篇关于json error: Use of overloaded operator [] is ambiguous错误的解决方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...2020-04-25- 这篇文章主要介绍了C++基于递归算法解决汉诺塔问题与树的遍历功能,简单描述了递归算法的原理,并结合实例形式分析了基于递归算法解决汉诺塔问题与数的遍历相关操作技巧,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了vue模板配置与webstorm代码格式规范设置详细的相关资料,需要的朋友可以参考一下文章得具体内容,希望对你有所帮助...2021-10-28
- 我们使用date函数直接显示后面带有date("Y-m-d H:i:s",$t);发现显示的为1970-01-01了,这个问题对于新手来讲可能不好理解,但对于做过几年的高手来讲小菜了。 如date...2016-11-25
- 这篇文章主要介绍了C#约瑟夫问题解决方法,较为详细的分析了约瑟夫问题及C#解决技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 1:为什么我得不到变量 我在一网页向另一网页POST数据name,为什么输出$name时却得不到任何值? 在PHP4.2以后的版本中reGISter_global默认为off 若想取得从另一页...2016-11-25
- 前几天在IIS的配置上出了些问题,到网上查找了些资料,顺便整理放在这里,希望对大家有帮助 ...2016-01-27
解决:Bitmap too large to be uploaded into a texture exception问题
下面我们一起来看一篇关于 解决:Bitmap too large to be uploaded into a texture exception问题解决办法。 最近做项目发现其他手机没有问题,但是出现了一个手机报...2016-09-20- 这篇文章主要介绍了C++基于人工智能搜索策略解决农夫过河问题,简单描述了农夫过河问题的概念、实现原理并结合具体实例形式给出了C++使用人工智能搜索策略解决农夫过河问题的相关操作技巧,需要的朋友可以参考下...2020-04-25