小编far*_*ete的帖子

Yii2:从 hasMany 关系中选择最后一条记录

我对 mysql 的了解非常基础,现在我面临一个“复杂”(对我来说)的查询,我被困在其中,所以如果有人能给我一些启示,请提前感谢您。

我有三张表:

订单

id | name | comments | ...
Run Code Online (Sandbox Code Playgroud)

订单行

id | name | sDate | eDate | comments | ...
Run Code Online (Sandbox Code Playgroud)

订单行统计信息

id | lineID | date | status | ...
Run Code Online (Sandbox Code Playgroud)

每天 OrderLinesStats 都会通过 cron 作业更新,并获取包含实际日期、状态和其他字段的新记录,因此最高 id 是实际数据。

我试图在 yii2 中获取最后一个 stats 行,如下所示:

在 OrdersLines 模型中:

public function getLastOrdersLinesStats()
{
    return $this->hasMany(OrdersLinesStats::className(), ['lineID' => 'id'])
        ->orderBy(['id'=>SORT_DESC])
        ->groupBy('lineID');
}
Run Code Online (Sandbox Code Playgroud)

订单型号:

public function getOrdersLines()
    {
        return $this
            ->hasMany(OrdersLines::className(), ['orderID' => 'id'])
            ->orderBy(['typeID' => SORT_ASC, 'name' => SORT_ASC])
            ->with(['lastOrdersLinesStats']);
    } …
Run Code Online (Sandbox Code Playgroud)

php mysql yii2 yii2-advanced-app

4
推荐指数
1
解决办法
3888
查看次数

yii2更新后返回上一页

更新记录后,如何将用户重定向到上一页?这是典型的情况:

  • 用户位于索引页面中并过滤记录中的结果或分页,然后他们找到要编辑的那个并单击编辑按钮.他们更新该记录的数据,一旦他们点击"更新"按钮,他们就会被重定向到索引视图,但先前选择了过滤器/页面.

我已经尝试在更新后在我的控制器中使用下面

return $this->redirect('index',302); (this is not what I need)

return $this->redirect(Yii::$app->request->referrer); (this gets user back to update view and not to index view with filters)

return $this->goBack(); (this gets user to homepage)
Run Code Online (Sandbox Code Playgroud)

谢谢!

php yii2 yii2-advanced-app

3
推荐指数
2
解决办法
1926
查看次数

Yii2 Rest api 与不记名身份验证

我创建了 api 结构/配置并且它可以工作,但现在我需要使用承载身份验证对其进行设置,并且我发送到 api 的每个 GET 请求(使用身份验证承载 XXXXXXXXXXXX)都会给我一个 401 错误:

{"name":"Unauthorized","message":"Your request was made with invalid credentials.","code":0,"status":401,"type":"yii\\web\\UnauthorizedHttpException"}
Run Code Online (Sandbox Code Playgroud)

对于这个问题的长度以及所有片段感到抱歉,但我尝试了一些更改,阅读了我在这里找到的所有内容,但没有成功,我开始对此失去控制。我可能会错过什么?

我的应用程序使用具有下一个文件夹结构的高级模板(与我读过的所有方法相同):

> -api
>     --config
>       --main.php
>       --params.php
>     --modules
>       --v1
>        --controllers
>          --OrdersController.php
>        --models
>          --Orders.php
>        --Module.php
>     --web
>        --index.php
> -backend
> -common
> -frontend...
Run Code Online (Sandbox Code Playgroud)

api/config/main.php

<?php

$params = array_merge(
    require(__DIR__ . '/../../common/config/params.php'),
    require(__DIR__ . '/../../common/config/params-local.php'),
    require(__DIR__ . '/params.php')
    //require(__DIR__ . '/params-local.php')
);

return [
    'id' => 'app-api',
    'basePath' => dirname(__DIR__),    
    'bootstrap' => ['log'], …
Run Code Online (Sandbox Code Playgroud)

php api rest yii2 yii2-advanced-app

2
推荐指数
1
解决办法
5094
查看次数

标签 统计

php ×3

yii2 ×3

yii2-advanced-app ×3

api ×1

mysql ×1

rest ×1