谁一开始就是大神?

PHP 第31页

PHP

IN查询不到[2.0]

lovesuper阅读(56)

$Grouporder=Grouporder::find()->where(['state'=>2,'id'=>$id])->asArray()->all();
foreach ($Grouporder as $key=>$value) {
    $map['id'] = array('in',$value['orderId']);
    $Order=Ordermanagement::find()->where($map)->asArray()->all();
}

IN 多条查询语句 不好事儿 求高手指导 谢谢

我这里的$arr是一个索引数组。where条件的意思是 status=1和category_id在$arr这个数组里面能找到的条件
把你的$value[‘orderId’]都打印初来,查看一下是否是你预期的值
用with和延迟加载把
http://www.yiichina.com/doc/guide/2.0/db-active-record#
你这个in写法好像thinkphp的,,,怪不得我看着好熟悉。。这种问题,你百度一下。就能找到,建议楼主遇事多百度O(∩_∩)O~

yii框架rbac报错[2.0]

Nicefans阅读(50)

Unknown Property – yii\base\UnknownPropertyException

Setting unknown property: yii\filters\AccessControl::0

基本可以肯定你的控制器的behaviors方法的rules值写错了,看好了:rules的每个值是一个数组,大概像这样
rules => [['actions' => ['create',],'allow' => true,'roles' => ['@']]]
我猜你写成了这样
rules => ['actions' => ['create',],'allow' => true,'roles' => ['@']]
好好看看,最外层少了一层方括号
Setting unknown property: yii\filters\AccessControl::0,
意思是未知属性 0, 数组写错了,把代码贴出来,看看就知道了

如何获取部分字段?(使用find或fandAll/One)[2.0]

littledear阅读(60)

如何获取部分字段?
举个栗子:User表内,我只想知道createTime > 1491734306的id,而不需要其他字段。

顺便向老司机请教:我听说效率最高的方式是获取“我需要的字段”,而非整条。

目前所知道的所有Find方法,都只能得到整条数据。

是我了解的信息有误,还是Yii2没有对这方面做“效率考量”?

如果想获取某几个字段,用如下方式:
如楼上所言。
这些都是基础的东西,yii怎会没有考虑到。
基础文档啥的,还是要先看一看的。
http://www.yiichina.com/doc/guide/2.0/db-query-builder
asArray()->all()好像还是不太完美,因为涉及连接表的字段的话,就会以数组下标形式存在
比如主表是A,某些信息需要连接表B来查,那么代码类似这样:
$retArr = A::find()->select(['A.name','A.age','B.school'])->joinWith('B')->filterWhere(['dddd'=>[$a,$b])->asArray()->all();
这样的数组$retArr信息除了’name’,’age’,’school’之外,还有一个’B’为下标的子数组,这个数组就是多余的

小小小小小小问题

TinaStag阅读(46)

6VZ$}}5CBIQZDOCVGP59(AH.png

我本地环境是 wampsever php是7.0.0版本的 ,请问各位大佬怎么把调试输出时候显示的绝对路径 去掉啊?

php.ini
关闭debug
关掉xdebug

yii2没有登录就会跳site/login,怎现在怎么关掉这个登录功能?[2.0]

kenbubble阅读(53)

yii2 没有登录就会跳site/login,怎现在怎么关掉这个登录功能?

这里输入代码
‘user’ => [
‘user’ => [
‘loginUrl’=>null,
将配置文件里面的loginUrl属性设置为空,就可了
controller 里面取消 AccessControl 那部分代码,也可以自己写一段代码控制这部分逻辑,再或者按照上面这样配置 User相关参数。
将你的控制器的behaviors方法删掉就可以了,这样每个方法都可以免登录访问
site控制器里有个behaviors方法,它做了一些验证,改写规则或者删掉都行
在控制器里加上 public $enableCsrfValidation=false;

ajax配合csrf安全性的疑问[2.0]

WendyJames阅读(57)

先上代码

ww.png

qq.png

点击页面上的一个按钮会调用ajax访问控制器,我加了个csrf验证判断,如果页面不刷新csrf不会发生变化,那始终验证都是yes。要是使用者用这个固定csrf和不同的id请求这个接口,就会修改其它的记录。我应该怎么防止这种情况呢?

你的担心完全是多余的。
CSRF 是其他站点利用你使用的 A 浏览器登录的 B 网站所保存的 去伪造请求发送给 B 网站。
很显然,其他网站基本不可能知道你的 csrfToken。所以在检测了csrf的请求中只会得到 400。本身就存在于你网站之下的 JS 却可以毫无顾忌的获得这个 token ,这也正是你希望的。
这类似于你给了用户呈现的网页中的背景是一副湛蓝的天空,用户自己可以用 F12 换成大海。但这个用户无法把其他人的背景也换成大海。
除非这个用户是你。
把csrf放到后台吧
1 其实你开启了控制器的enableCsrfValidation=true之后,控制器会帮你验证csrf的,你不用自己验证
2 如果想重新生成,调用一下Yii::$app->request->getCsrfToken(true)就行,记得把新生成这个csrf放到你的页面meta[name=csrf-token]的content里,便于继续调用
3 csrf的起到安全问题其实就是有这个验证(防止跨站攻击(跨站攻击,没这个值)),而没必要再变换这个值,所以没必要变换这个值

分页链接[2.0]

dmsea阅读(52)

use yii\widgets\LinkPager;
r=search/index&page=7

怎样改成:

r=search/index&w=关键词&page=7

这样的格式?

在new Pagination($config)的时候,除了你要的配置,在config里加入’params’ => [‘w’ => ‘关键词’],也就是
路由

updateAll返回2,但是数据库并没有更新[1.1]

youthdolphin阅读(53)

RT,updateAll返回2,但是数据库并没有更新;

$result = $this->updateAll(array('status' => 1), 'store_id=:store_id', array(':store_id' => $store_id));

$result返回2.

数据库:

11.png

可以看出,数据库并没有改;

sqlLog:

2017/04/07 11:22:08 [trace] [system.db.CDbCommand] Executing SQL: UPDATE `slb_stock_balance` SET `status`=:yp0 WHERE store_id=:id

我记得有个参数可以把 :yp0 这个部分也显示到log中的,然后你根据 sql进行反查就行了。

gii生成代码,create.php里表单的问题[2.0]

Tinayak阅读(61)

  1. 控制器代码

      public function actionCreate()
     {
         $model = new News();
    
         if ($model->load(Yii::$app->request->post()) && $model->save()) {
             return $this->redirect(['view', 'id' => $model->news_id]);
         } else {
             return $this->render('create', [
                 'model' => $model,
             ]);
         }
     }
    
  2. view里create.php表单代码:
      <?= $this->render('_form', [
         'model' => $model,
     ]) ?>
    
  3. *表单效果:
    QQ截图20170411123106.png

    请问上图中文字ID和添加时间怎么去掉呢,状态怎么把文本框修改成单选框?

有form.php,去那个里边修改表单。
http://blog.csdn.net/q 31648761/article/details/64122138
常用表单样式框,
这简直就是送分题
这么简单。
直接删除掉就好啊,或者隐藏起来

提交表单时使用behaviors写入时间戳[2.0]

LeoStone阅读(56)

我是下面这样写的,但提交是总是报错inputtime为空,查了手册和资料是这样写的吧

   public function behaviors()
    {
        return [
            'timestamp'=>[
                'class' => TimestampBehavior::className(),
                'attributes' => [
                    BaseActiveRecord::EVENT_BEFORE_INSERT => ['inputtime','updatetime'],
                    BaseActiveRecord::EVENT_BEFORE_UPDATE => 'updatetime'
                ],
                'value' => time()
            ]
        ];
    }

另外这里默认提供值的是11位整数,不是时间。
use yii\behaviors\TimestampBehavior;
public function behaviors()
用beforesave函数打印一下你存储时的对象。看看是什么值
用beforesave函数打印一下你存储时的对象。看看是什么值

登录

找回密码

注册