【问题标题】:how to combine 2 model requests into one query如何将 2 个模型请求合并到一个查询中
【发布时间】:2017-02-05 13:40:31
【问题描述】:

我有 2 张桌子的 2 个模型

“会话”表:

session_id |用户 ID |其他领域

“用户现金”表:

user_id |金额 |其他领域

这两个表之间没有任何关系。

我收到 session_id,我的目标是获取金额并更新它。 使用纯 SQL 可以通过 user_id 连接表,通过一个简单的查询轻松进行数量选择。

可以使用模型和条件来生成一个查询,这样我就可以使用 userCashModel->save() 来更新金额?

目前我这样做是通过 2 个数据库查询:(

        $session_model = Sessions::model()->findByAttributes(array('session_id'=>$session_id));

        // updating the amount 
        $user_cash = Usercash::model()->findByAttributes(array('userId'=>$session_model->user_id));
        $user_cash->realMoney += (double)$amount;
        $user_cash->save();

【问题讨论】:

    标签: php mysql yii model


    【解决方案1】:

    在 yii1 中你可以使用 findBySql

     $user_cash = Usercash::model()->findBySql(
     " select * from usercash 
        innner join sessions on sessions.user_id = usercash.user_id 
        and sessions.session_id = :act_session_id", array(':act_session_id' => $session_id)
     );
    

    【讨论】:

    • 这样我可以 $user_cash-> += $amount ; $user_cash->save()
    • 您的代码不清楚....您指的是名为 $user_cash->realMoney 的列,在此您添加 var $amount .. 如果列名正确并且您有适当的value $amount ...是的,您可以做到..使用findBySql获得的$user_cash ..是相关的activemodel ..您从数据库表中过滤
    猜你喜欢
    • 1970-01-01
    • 2011-03-19
    • 2021-04-05
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多