谁一开始就是大神?

PHP 第30页

PHP

有joinWith()的SQL查询怎么写select()语句?[2.0]

ecyKeo阅读(138)

我的原始语句是:

$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()
这样试试

菜鸟YII2.0URL美化问题[2.0]

Bobbubble阅读(147)

大家好我是一个新手 yii2.0 url 怎么美化成 user/index/2/2.html 这样呢 url 静态写好了 就是不知道带方法名和 带多个参数的url美化

看看这个有没有帮助:http://www.yiichina.com/video/36
我只告诉长的帅的
还可以这样写

yii2的NavBar如何写入图片也就是logo[2.0]

lovedolphin阅读(130)

现在 NavBar里写入图片logo

yiichina里是

<a class="navbar-brand" href="/"><img src="/images/logo.png" alt="Yii Framework 中文社区"></a>

可如何用呢?

怎么去掉分页提示总计*条数据。。[2.0]

fationpony阅读(125)

snipaste_20170419_170238.png

我使用了分页,指定20,数据达到20就显示分页,否则不显示上面的提示…谢谢大家

在你自定义的地方重新写一个GridView继承yii\grid\GridView这个原类,然后重写renderSummary方法
然后渲染grid的时候用你现在的这个GridView类就行

Yii::$app->user->identity不能获取用户数据[2.0]

fationLion阅读(156)

Yii::$app->user->identity->username获取数据,显示为空,var_dump(ii::$app->user->identity)

common\models\register\LoginUser Object
(

[username] => 
[password] => 
[rememberMe] => 1
[_user:common\models\register\LoginUser:private] => 
[_attributes:yii\db\BaseActiveRecord:private] => Array
    (
        [id] => 1
        [username] => xiaoqiang
        [password] => 
        [phone] => 18094570201
        [ip] => 
        [status] => 10
        [password_hash] => $2y$13$MPXhbqGADeuHLI6L.ld0vOy6KNoP0MDMty/8qUZf5kY.oh0X0Rqk2
        [auth_key] => 
        [created] => 0000-00-00 00:00:00
    )

[_oldAttributes:yii\db\BaseActiveRecord:private] => Array
    (
        [id] => 1
        [username] => xiaoqiang
        [password] => 
        [phone] => 18094570201
        [ip] => 
        [status] => 10
        [password_hash] => $2y$13$MPXhbqGADeuHLI6L.ld0vOy6KNoP0MDMty/8qUZf5kY.oh0X0Rqk2
        [auth_key] => 
        [created] => 0000-00-00 00:00:00
    )

[_related:yii\db\BaseActiveRecord:private] => Array
    (
    )

[_errors:yii\base\Model:private] => 
[_validators:yii\base\Model:private] => 
[_scenario:yii\base\Model:private] => default
[_events:yii\base\Component:private] => Array
    (
    )

[_behaviors:yii\base\Component:private] => Array
    (
    )

)

吧你这个类common\models\register\LoginUser里面定义的$username,这个属性去掉,自定义的属性和数据库里面的字段重复了
你确定你处于登录状态?

gridview是否可以自适应页面?[2.0]

Bellayak阅读(158)

一个页面上放了一个GridView,其中一列比较长,我想达到这个功能:如果这个GridView一个页面显示不下(即要拖滚动条才能看到全部的页面),那么这较长的一列可以自动收缩(比如限定最长10个字符,然后后面加3个点),使GridView刚好在一个页面全部显示。

我想你需要的是实现换行 断词 断句
看看这个demo吧
http://yiilib.com/topic/716/Yii2 GridView中实现断行断字
自己自定义style写css样式
默认的不是?
这个关gridview啥事。
这是前端样式在管理。
你不试下,咋就知道不行的呢?只是给你提个思路,具体怎么实现自己去尝试吧

用raphael做思维导图,chrome控制台提示警告[2.0]

HaHcrab阅读(145)

用seajs和raphael做的思维导图,思维导图要做个局部刷新,做了一个div,局部刷新时数据是可以过来的,但是画布内容显示不出来,但是点一下窗口最大化按钮数据就出来了,
chrome控制台警告:Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user’s experience. For more help, check http://xhr.spec.whatwg.org/.这个东西,
前端小白,不是很会弄,跪求大神指点。

这个报错的意思是:使用同步的AJAX请求不是推荐做法,只是一个警告,当AJAX的sync设置成false,就会出这个提示。并不是你出错的关键

如何查询当前记录的上一条和下一条记录(表中已有排序字段)?[2.0]

dmdolphin阅读(148)

表中增加了排序字段“sort_by”,排序方式为先根据“sort_by”倒序排列,然后根据“id”倒序排列。在这种情况下如何查询当前记录的上一条记录和下一条记录?

说个思路:
1、获取记录的绝对顺序号(也就是按每页1条记录算出来的值):在列表页中将每条记录按照指定的排序方式所处的绝对顺序号(n)保存下来,在详情页的链接中将此顺序号传过去。
2、在详情页中,根据顺序号,按指定的排序方式查找第n-1和n+1条记录,作为上一条,下一条,显示在当前页,同样,在上一条和下一条的链接上将n-1和n+1要传过去,继续使用。
我优先能想到的就是limit 0, 1 这样,通过增加offset 来取下一条
如果要深入一些,我觉得在 数据库设计上可以下些功夫
也有一些笨办法,一次取一批出来,反正是数组,下标从0 开始依次递增。
sort_by 值如果存在就用它 如果不存在就用ID
查询 sort_by大于当前sort_by 和sort_by 小于当前sort_by 的排序还是按:先根据“sort_by”倒序排列,然后根据“id”倒序排列这样试试
我只能告诉你两句sql语句
参考我的的这条 http://www.yiichina.com/tutorial/1142

union联合查询的结果使用搜索,不能准确查询[2.0]

Jacktom阅读(149)

$query = AccountsInfo0::find();

     $unionQuery = AccountsInfo1::find();
        $query->union=[
        [
            'query'=>$unionQuery, 
            'all' =>$all
        ]
        ];

使用union查询子句查询,使用搜索的时候不能准确查询,会出现重复查询的结果1.png

2.png

3.png

389272时表1的内容,389349是表2的,

$unionQuery也需要添加where()条件

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

littledear阅读(156)

如何获取部分字段?
举个栗子: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’为下标的子数组,这个数组就是多余的

登录

找回密码

注册