【问题标题】:joins in YII framework加入 YII 框架
【发布时间】:2012-06-08 06:44:36
【问题描述】:

如何在 yii 框架中写下查询

function Get_Services($user_id, $isResultSet = true){
    $sql = $this->select()
                ->setIntegrityCheck(false)
                    ->from(array('p' => 'phone_service'))
                    ->join(array('u' => 'user_preferences'), 'u.phone_service_id = p.phone_service_id')
                    ->where('u.user_preferences_name = ?', 'is_user_package_active')
                    ->where('p.user_id = ?', $user_id);

    if($isResultSet){
        return $sql->query()->fetchAll();
    }else{
        return $sql;
    }
}

【问题讨论】:

  • yii 文档解释了连接,并且该站点上也有大量教程。

标签: yii


【解决方案1】:

大致:

$sql = Yii::app()->db->createCommand()
   ->from('phone_service p')
   ->join('user_preferences u', 'u.phone_service_id = p.phone_service_id')
   ->where('u.user_preferences_name = :upn', array(':upn' => 'is_user_package_active'))
   ->where('p.user_id = :uid', array(':uid' => $user_id)
   ->queryAll();

【讨论】:

    【解决方案2】:

    试试这个……

    function Get_Services($user_id, $isResultSet = true){
            $sql = $this->select()
                        ->setIntegrityCheck(false)
                            ->from(array('p' => 'phone_service'))
                            ->join(array('u' => 'user_preferences'), 'u.phone_service_id = p.phone_service_id')
                            ->where('u.user_preferences_name = ?', 'is_user_package_active')
                            ->where('p.user_id = ?', $user_id);
    
            if($isResultSet){
                return $sql->queryAll();
            }else{
                return $sql;
            }
        }
    

    【讨论】:

      【解决方案3】:
      $sql = Yii::app()->db->createCommand()
      ->from('phone_service p')
      ->join('user_preferences u', 'u.phone_service_id = p.phone_service_id')
      ->where('u.user_preferences_name=:preferences',array(':preferences'=>'is_user_package_active'))
      ->where('p.user_id = :uid', array(':uid' => $user_id)
      ->queryAll(true);    
      

      【讨论】:

        【解决方案4】:

        我建议您为此创建模型,使用Yii 深入研究关系,并使用活动记录和with() 调用来加入。

        也可以是简单的like之后的调用

        $records = PhoneServices::model()->with(array('userPreferences' => 
         array('condition' => 'userPreferences.user_preferences_name = 
         "is_user_package_active" ')))->findAllByAttributes(array('user_id' => $user_id)); 
        

        【讨论】:

          【解决方案5】:

          试试下面的

          $sql = $this->select()
                          ->setIntegrityCheck(false)
                              ->from(array('p' => 'phone_service'))
                              ->join(array('u' => 'user_preferences'), 'u.phone_service_id = p.phone_service_id')
                              ->where('u.user_preferences_name = ?', 'is_user_package_active')
                              ->where('p.user_id = ?', $user_id);
          $query= $model->findAll($sql);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-08-22
            相关资源
            最近更新 更多