怎么实现redis队列,且应用
我有一个扩展,你可以看看
github
怎么实现redis队列,且应用
我有一个扩展,你可以看看
github
view层显示的代码
<?= DetailView::widget([
'model' => $model,
'attributes' => [
'news_id',
[
'label' => '栏目名',
'value' => $model->findCateName()->catname
],
'title',
'description',
'content:ntext',
'inputtime:datetime',
[
'label' => '状态',
'value' => $model->status == 1 ? '启用' : '禁用'
]
],
]) ?>
上图为显示的内容,我不想让它转义,怎么处理??
内容格式化一下
‘format’=>’html’,
你存的内容不对吧?看看数据库中存的内容,是不是转成其他格式了,使用ntext是可以正常显示html的。
yii2 gridview tr中的data-key值设置之后不生效,如果我设置’data-value’的时候值就能出来,但是使用’data-key’的时候就变成了如图所示这个样子
参照yii\grid\GridView的这两个方法
你按照上图的设置配置一下试试。
给我瞅瞅你这块的代码是怎么设置的 gridview
你好,根据源码来看,data-key是被源码覆盖的,这个值源码会自动赋值为每条模型的主键值,所以你可以把这个属性换成别的就可以了,详情请看类 yii\grid\GridView源码的第514行
源码里可见 data-key 已经被Yii 使用了,就好像 case关键词被PHP使用了一样,如果你建了一个 Case AR class 一样无法用,所以尽量避开吧。 楼上几位都很厉害,直接就翻源码了,哈哈。
我想看看GridView::widget()都获取到了什么数据,比如SQL查询后都获取的都是哪些字段的值。但到了前端已经是个HTML页面了,这个应该怎么调试呢?
还是去看源代码吧,在源代码里面断句。
调试dataProvider就是了
数据是由dataProvider提供的,而归根到底是dataProvider的query属性作为一个查询对象查询提供的,也就是一个ActiveQuery对象,这个对象当初你select了什么,就会查出什么,没有定义查出全部,跟你使用ActiveRecord查询东西是一样的
打印出所有变量呗
需求是frontend访问能直接读取在backend下设置的缓存
比如说我在backend下Yii::$app->cache->set(‘key’,’test’),
然后在frontend下Yii::$app->cache->get(‘key’)读取
现在在相同模块下读取就没事,但是如何实现跨模块访问呢?谢谢!
第一:你要确保,backend下的cache,和frontend下的cache是访问同一个cache
第二:你要确保当你夸模块读取的时候的,这个数据已经存在你的cache里面了
第三,你这个叫做跨app
直接使用redis也是可以的,你现在的方式是缓存的文件。
改成
GridView的动作列这样配置,
view代表的查看动作,update代表更新的动作,delete代表删除动作
select * from td_xm where xmbh in (select xmbhs from td_xm where id = 56)和
select * from td_xm where xmbh in (20160024,20170003)
查询的结果不一样,第一个没数据,第二个有两条数据,这是什么原因造成的?其中select xmbhs from td_xm where id = 56值为20160024,20170003,就是id为56的xmbhs字段的值就是:20160024,20170003,以逗号隔开的
实在不明白in()到底这个时候如何理解??
in()
参数是数组,(select xmbhs from td_xm where id = 56)
查出来的是个字符串
好好学习下数据库in(这里是一个一维数组),前提是php环境
,你那样会变成一个字符创'20160024,20170003'
,并非是你想的'20160024','20170003'
xmbhs xmbh
全场最佳哈哈,in里面就是数组,查询出来的结果没有分隔当成一个值了,
把 vendor里面的一个扩展提到 common 文件下的extensions 下 该怎么提,这样便于修改一些功能。因为vendor里面的代码不能随便改。
继承vendor里面的类即可。
两个步骤:
1。将文件夹完整拷贝到common下面
2。这一步比较关键,涉及到了yii2的类自动加载的机制,需要符合下面的规范
每个类都必须置于命名空间之下 (比如 foo\bar\MyClass)。
每个类都必须保存为单独文件,且其完整路径能用以下算法取得:
// $className 是一个开头包含反斜杠的完整类名(译注:请自行谷歌:fully qualified class name)
$classFile = Yii::getAlias(‘@’ . str_replace(‘\’, ‘/’, $className) . ‘.php’);
'user' => [
'identityClass' => 'common\models\User',
'loginUrl' => '/user/index/index',
],
'usert' => [
'identityClass' => 'common\models\UserTwo',
'loginUrl' => '/usert/index/index',
],
报了错 The configuration for the “usert” component must contain a “class” element.
这样设置该怎么办?
‘user’ => [
’class’ => ‘yii\web\User’,
‘user’ => [
],
‘usert’ => [
’class’ => ‘yii\web\User’,
],
啊啊啊,你老婆是不是叫刘瑞啊!
我的原始语句是:
$query = ArticlesSearhch::find()->where(['isDeleted'=>0])->joinWith(['authors']);
因为article中的content字段内容很多,所以我现在不想全查出来,只查出title、authorId、lastEdited等几个字段,这个select()语句该怎么写?
ArticlesSearhch中的authors
public function getAuthors()
{
return $this->hasOne(TbAuthors::className(), ['id' => 'authorId'])
->asArray();
}
我改写成下面这样,报错:
$query = ArticlesSearhch::find()->select('articles.id','articles.title','articles.authorId','articles.lastEdited','articles.format')->where(['articles.isDeleted'=>0])->from(['articles'=>'articles'])->joinWith(['authors']);
报错信息:
Database Exception – yii\db\Exception
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COUNT(*) FROM `articles` `articles` LEFT JOIN `authors` ON `articles`.`authorId`' at line 1
The SQL being executed was: SELECT articles.title COUNT(*) FROM `articles` `articles` LEFT JOIN `authors` ON `articles`.`authorId` = `authors`.`id` WHERE `articles`.`isDeleted`=0
求大神帮忙!谢谢!
搞定,格式写错了,改成这样就可以了:
$query = ArticlesSearhch::find()->select(['articles.id','articles.title','articles.authorId','articles.lastEdited','articles.format'])->where(['articles.isDeleted'=>0])->from(['articles'=>'articles'])->joinWith(['authors']);
self::find()
这样试试