首页
学习
活动
专区
圈层
工具
发布

yii2开发后记

而且,像input这样的小部件,用ActiveForm类来展现,yii会对每个自动加入ajax验证,其一般的小部件都放在yii\widget\里,我们还可以在此文件夹里构建自定义的小部件类。...yii里的QUERY查询语句构造器非常简单好用,它可以用在模型和控制器中,虽然可能会造成模型与表不对应,但其构成接近sql语句,使用它可以轻易写出复杂的sql语句而不必严格遵从yii的内置规则。...使用$res[n]->btable->attr来引用B表的对应属性。...13.使用ActiveForm创建表单 yii2中使用小部件创建view视图的步骤: 设置一个Model设置其属性 public $username; public $password; 设置其rule...5.yii模型属性转数组 YII用toArray()方法可以将模型的属性转换为数组进行输出,可独立使用,也可以在查询时用连续操作方式使用。

3.9K50

yii2开发中19条推荐实践

Composer 这个是做yii2开发的基石,除非没有办法使用,否则请不要放弃,除了更容易的安装yii2及第三方扩展外,能使用Composer代表着你的服务器最少能运行起来php-cli,那么你就可以使用...开发中 本段为你介绍我在yii2开发中一些习惯和小技巧,希望对你有用。...复用随时要想到(小挂件) 编码的原则是尽最大努力让代码复用,尤其是小挂件,它让视图层实现了复用,小挂件的使用非常简单 1、在@app下建立一个文件夹components 2、在components内建立一个挂件类...> 当然挂件可以很复杂,比如我们使用的ActiveForm、GridView等。关于小挂件我之前也写了一篇文章,有兴趣的同学可以看看。...另外在做迁移脚本的时候,如果你的表有前缀,那么在脚本里的写法如下 {{%user}}// discuz_user 时间问题 使用yii2开发mysql类web应用的时候,数据表的时间类字段我们喜欢用时间戳

3.8K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    微信小程序实践-- 服务器端接口restful配置

    alt yii2框架内置是支持restful规范的,按照yii2的规则做我们可以轻松实现比如数据表数据的获取、插入、更新、删除等基础操作以及登录验证等功能。...这里要说明的参数是pluralize,在restful使用上一直存在两种观点,就是对于资源在url上的表现应该是单数还是复数问题,yii2默认是复数形式,如果你想使用单数可以将pluralize设置为false...album控制器的actionIndex,以此类推yii2提供了很多个内置的action识别,具体见下图 alt 当然具体如何实现的你可以参考 yii\rest\UrlRule.php 类及yii2的...,而你无需再写任何对应代码,简单吧~~ 这里要注意几点 第一: 必须指定$modelClass,每个控制器代表一种资源,隐身就是一个数据表中的数据或你操作系统的文件云云,总之它是一种资源。...完事了 简单配置后,老沙搞定了服务器端的配置,接下来他计划使用小程序和yii2实现一个队相册列表的功能实现,下一篇告诉你。

    3.5K70

    yii2之layout布局篇

    这个时候怎么办,再写一个和上面基本完全一样的代码吗? 布局文件嵌套(小部件:ContentDecorator) 这个小部件就是专为此功能而生的。...因此Yii中布局文件可以通过ContentDecorator小部件进行无限的嵌套。.../columns_3.php'; return $this->render('index'); } 在布局中可以定义多个点位符变量,然后在各个子布局中指定所使用的内容。...中使用$layout控制布局文件 yii2与yii在选择布局文件上有一点比较大的不同,yii是既可以在/protected/views/layout/main.php设置布局文件,也可以使用下面语句设置...,但yii2中我没有找到相关的设置文件,只能使用下面方法对布局文件进行设置了,不过下面的方法非常方便,使用起来非常好用。

    1.9K51

    Yii2 VS thinkphp5.0

    Yii2.0使用一年多了,最近因为原来公司狗带了,换了公司,开始使用tp5.0。之前也有使用过tp3.2的框架,但是每次问及各个框架之前的区别的时候,总是不觉得有什么区别。...但是从目前对tp5一周的使用时间来看,tp5相对于yii2来说,确实是弱爆了。 1、Yii2所有的操作都是对象操作。所有的对象都继承Yii中的Object对象。TP中,有对象也有函数。...YII2中,数据model时跟数据表完全映射的。一个model对象就是一条数据记录。对象的属性数据就是记录中各字段的内容。TP5中,数据model时一数据表的操作对象。提供一些数据操作方法而已。...Yii2中,new model(),然后调用save()方法,这个model就是一个完整的数据表记录,数据表的多有字段映射成为对象属性。TP中的save()方法是把记录写入数据库。然后就没了。...,因为必须先把数据从数据库中查询出来才操作,所以,更新的时候是能获取数据表内所有字段信息。

    2.4K20

    这周撸了两款小程序,总结下经验。

    以上是关于小程序登录的前后台逻辑,如果你使用yii2类框架,很多都内置了,并不复杂。 但是这里还有几个问题 小程序端何时进行登录逻辑? 发起请求时access_token过期了如何处理?...formId的种子表,将尽可能多的用户和后台的行为都采用form表单提交的形式,并且获取formID,对,要变态的多,这样你的formId表数据起来了,以后想发消息的时候用就好了。...服务器端 接下来总结下服务器端,我使用yii2的restful组件作为接口支持,关于restful的基本功能请参考yii2官方文档或我之前录制的课程《Yii2的RESTful讲解》,在这里分享我认为关键的点...让yii2能解析json的请求内容 默认情况下yii2并不能识别请求中的json格式,而我们小程序在发起请求时喜欢用它,因此我们要对yii2进行一下配置。...用户认证 小程序的登录需要服务端的用户认证配合,当然我使用yii2框架,内置的restful已经支持了,如果你的系统不支持用户认证,可以自行建立access_token的生成机制,具体可以参考腾讯开放的小程序服务端框架

    1.7K50

    yii2的model数据库配置以及应用(主从数据库配置)

    4、model的方法应用 当然yii2还有一些CDB的类用法,createCommend写sql这种我不是很推荐了,model自身会去绑定很多的功能让大家去使用以及理解。...当然是用场景多多,看你去使用吧。afterSave就不解释了。 (3)查询方面的建议 至于model的数据查询我就不介绍了,这方面教程肯定挺多的。...还有很多朋友会去纠结联表的事情, yii2的model里支持联表,但是从性能考虑,尽量避免联表。...如何避免联表: 如查询文章列表,其中一项为分类名称,通过list取出文章分类的列表,将相对应的分类列表中分类名称, 这样的操作比联表效率要高。...如果非联表不可的可以写sql,便于以后的维护,构造的sql有有点也有缺点,自己去衡量取舍。

    1.8K41

    在MySQL里,有个和in一样的东东叫做exists,但是它比in更牛叉,你会么? 转

    我们在学习Yii2的时候,一定接触过这样的where输入 $query->where(["exists",xxxx]); User::find()->where(["exists",xxxx])->all...(); 是的,这是MYSQL的exists关键词,今天我们就来说说这个exist,为了给大家更清楚的讲解,先给大家说下本文目录: 什么是exists exists和in的区别和使用场景 使用...Yii2的Query Builder实现一个exists语句 要自己看哈。...user表大很多的时候,使用exists是再恰当不过了,它没有那么多遍历操作,只需要再执行一次查询就行。...Yii2使用exists 我想我只需要写一个Query Builder的用法,其他你应该能举一反三了吧 $query = new Query(); $query->from("user") ->

    88010

    详解yii2实现分库分表的方案与思路

    的ioc去创建名字叫做”db”的这个component返回给model层使用。...3)M库N表:1库N表逐渐发展,单机存储和性能达到瓶颈,只能将数据分散到多个服务器存储,于是提出了分库的需求。...但是从”1库1表”的框架实现逻辑来看,model层默认取db配置作为mysql连接的话,是没有办法访问多个mysql实例的,所以必须解决这个问题。 一般产生这个需求,产品已经进入中期稳步发展阶段。...有2个思路解决M库问题,1种是yii2通过改造直连多个地址进行访问多库,1种是yii2仍旧只连1个地址,而这个地址部署了dbproxy,由dbproxy根据你访问的库名代理连接多个库。...总结 以上就是关于yii2实现分库分表的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

    2K30

    salesforce零基础学习(八十)使用autoComplete 输入内容自动联想结果以及去重实现

    这种情况下可以使用jquery ui中的autoComplete实现。...实现此功能可以整体分成三步: 1.通过输入内容检索相关表中符合条件的数据; 2.对检索的数据进行去重以及封装; 3.前台绑定autoComplete实现自动联想功能。...一.通过输入内容检索相关表中符合条件的数据 因为要对两个表进行操作,使用SOQL需要对两个表进行查询,并对搜索结果进行拼接,这种方式使用SOQL只能对每个字符进行like操作。...而且对多个表操作推荐使用SOSL,所以此处使用SOSL进行检索操作。...实现自动联想功能 使用jquery ui的autoComplete功能,需要下载jquery ui 的js以及css文件,页面使用了jquery,所以也需要使用jquery的js文件。

    1.4K70

    Yii2和thinkphp5中一个小差异造成bug

    考虑一个场景,一个函数需对相同表进行多次查询,多次查询中有部分查询条件相同。对于这种情况,Yii2和thinkphp5的实现方式要格外小心。...在Yii2中,可以直接使用clone 复用共同的查询条件,但是thinkphp5的话,必须把相同条件再重复写一次。 例如,需要查询总有效文章数,以及今日发布有效文章数。 Yii2 版本 ?...查询最终的执行时通过model类中的getQuery()方法获得的query对象执行的。所有的查询条件最终都绑定在query对象当中。 ?...虽然是在clone出来不同的两个model添加查询条件,但是最终都是添加在相同的query当做。 所以第一条语句就会有所有的查询条件。...到此,对于一开始的使用场景,thinkphp5也可以使用clone完成 ? 在这其中有几点需要注意: 对象clone之后,其属性执行的是浅拷贝!!

    1.1K20

    insert ... on duplicate key update 和 replace into

    999) on duplicate key update i2 = 205 示例 SQL 中,update i2 字段值和表中 i1 = 105 的记录的 i2 字段值一样。...因为表中主键 + 唯一索引可能存在多个,插入一条记录,该记录中的多个字段可能和多条不同记录存在冲突,这种情况下,insert duplicate 只会更新冲突的第 1 条记录。...因为一个表中,主键 + 唯一索引可能有多个,插入记录中不同字段可能会和不同的记录产生冲突。 以 t_insert 表为例,id 为主键字段,i1 字段上有唯一索引。...使用更新旧记录方式,如果能够使用这种方式实现 replace into,说明插入记录只和表中的一条记录冲突,把待插入记录各字段的值更新到旧记录中,增加 deleted 计数,replace into 主流程就完成了...使用更新旧记录方式,需要同时满足 3 个条件: 条件 1,第 2 步中报记录冲突的那个索引是表中最后创建的唯一索引(也可能是主键)。 条件 2,表中的所有字段,都没有被其它表的字段作为外键约束。

    2K40

    yii2使用Migrations为整个数据库表创建迁移

    例如,在应用开发的过程中,新建了一张表,在应用部署到生产环境后,发现需要为这张表创建一个索引以提升查询性能,等等。...那么我现在数据表有接近300多张,所以不可能每张表进行命令创建迁移,这样太浪费时间且项目也不止一个,所以我想到一个思路,就是使用命令让程序批量将每张表创建迁移文件,那么原生的Migrations据我了解是没办法实现将表里每个字段都输出到迁移代码里面...Yii::$app->getDb()->getSchema()->getTableSchema(表名)方法并不能获取到我的索引字段,那么我们就不要局限于Schema,我们改用mysql语句来查询:Yii...0,然后再使用 foreach 方法,Key_name是新增索引时的名字,table 就是你新增索引到哪个表,Column_name 就是字段名。...->getDb()->getSchema()->getTableNames()获取所有的表名,接着就 foreach 循环所有的表,key为键值 value为表名,然后我们使用php的 exec 函数执行命令

    2.2K31

    (数据科学学习手札113)Python+Dash快速web应用开发——表单控件篇(下)

    我们在上一期教程中已经对常见的几种具有不同功能的表单控件进行了比较详细的介绍,而在正式的开发网页表单时,不仅仅是将表单控件排列摆放出来那么简单随意,我们往往需要为控件添置一些补充内容,从而更好地引导用户使用它们...中的Form()与FormGroup()被设计用于更快捷地排布我们的表单控件,使用逻辑是先用FormGroup()组织好每一个表单控件,再将若干个FormGroup()形成的列表作为Form()的children...相信你也注意到我们有些FormGroup()中除了控件自身,还添置了一些额外的辅助性质的部件,常用的有: dbc.Label()   利用dbc.Label()部件,我们可以在对应控件之前添加说明文字,...有了今天的知识内容基础,加上之前教程内容的铺垫,我们可以开始用Dash书写一些形式更加丰富多样的web应用,比如一个在线英雄联盟英雄资料查看器,后台通过爬取LOL官网的实时数据,实现全英雄资料查询,先来一睹效果如何吧...Form()和FormGroup()轻松搭建出界面上方的三个控件;   3.编写回调,基于用户选择内容,以及查询按钮的点击情况,来异步渲染出下方Tabs()+Tab()区域内容,其中大量使用到列表推导非常的方便

    1.3K20

    纯Python开发LOL英雄信息查询平台

    中的Form()与FormGroup()被设计用于更快捷地排布我们的表单控件,使用逻辑是先用FormGroup()组织好每一个表单控件,再将若干个FormGroup()形成的列表作为Form()的children...相信你也注意到我们有些FormGroup()中除了控件自身,还添置了一些额外的辅助性质的部件,常用的有: 「dbc.Label()」 利用dbc.Label()部件,我们可以在对应控件之前添加说明文字,...dbc.FormText()等部件为对应的表单控件生成外部说明文字之外,dash_bootstrap_components还提供了基于InputGroup()的一系列部件,使得我们可以方便地创建出与控件本身浑然一体的说明内容...有了今天的知识内容基础,加上之前教程内容的铺垫,我们可以开始用Dash书写一些形式更加丰富多样的web应用,比如一个「在线英雄联盟英雄资料查看器」,后台通过爬取LOL官网的实时数据,实现全英雄资料查询,...,以及「查询」按钮的点击情况,来异步渲染出下方Tabs()+Tab()区域内容,其中大量使用到列表推导非常的方便; 4.最后「皮肤一览」区域的轮播图片结合了bootstrap的知识,对https://www.runoob.com

    1.2K20

    jQuery

    jQuery的链式操作可以把多个操作写在一行代码里,更加简洁。 事件、样式、动画支持。jQuery还简化了js操作css的代码,并且代码的可读性也比js要强。 Ajax操作支持。...)// 选取所有包含一个或多个标签在其内的标签(指的是从后代元素找) 例子: $("div:has(h1)")// 找到所有后代中有h1标签的div标签 $("div:has(.c1)")// 找到所有后代中有...//上面所有 $("#id").prevUntil("#i2") //上面到 i2 的所有(区间筛选) 父亲元素 $("#id").parent() $("#id").parents()...为了兼容性,我们在处理 checkbox 和 radio 的时候尽量使用特定的 prop(),不要使用 attr("checked",checked)。...on('mouseleave', 'li', function() {//绑定鼠标划出事件 $(this).removeClass('hover'); }); 页面载入   当DOM载入就绪可以查询及操作时绑定一个要执行的函数

    5K50

    Bloom Filter 的后继者?布谷鸟哈希与布谷鸟过滤器

    引子 之前我们聊过 LevelDB 中的布隆过滤器,它利用一组哈希函数和一块内存可以表示一个数据集,并支持对集合中数据条目的有无进行快速查询。...它虽有一定误报率,但是只使用相当小的内存,因此在特定场景下特别好用。不过它有一个显著的缺陷——不支持删除。本文我们介绍一种新的数据结构:布谷鸟过滤器,在紧凑的使用内存同时,支持删除。...常见的哈希表(Hash Table 或者字典,dictionary)会通过链表、开放地址探测等方式来处理冲突。...单桶多函数的布谷鸟哈希,便是开放地址法处理冲突的一种哈希表,只不过有冲突后,不是通过线性寻找新的位置,而是通过额外哈希函数来寻找。...理解假阳性,我们可以从哈希的本质出发。如开篇所述,哈希本质是从大空间映射到小空间,则小空间中一定会出现碰撞,出现碰撞的两个原值一个存在,便会让人以为另一个也存在。

    1.7K11
    领券