【问题标题】:Select left join in Yii2 is failedYii2中选择左连接失败
【发布时间】:2017-07-29 11:48:10
【问题描述】:

当我关注this tutorial 并尝试部分左连接失败。我不知道为什么,我该如何解决?

控制器中的这段代码:

public function actionGetSka($kodeSka)
    {
        $query = new Query;
        $query->select(['ska.no_ska','ska.tgl_ska','ska.kode_anak_asuh','anak_asuh.kode_calon','calon.nama_calon','ska.kode_calon_keluarga_asuh','calon_keluarga_asuh.nama','calon_keluarga_asuh.jenis_kelamin','calon_keluarga_asuh.pekerjaan','calon_keluarga_asuh.alamat'])  
              ->from('ska')
              ->join('LEFT JOIN', 'anak_asuh',
                'anak_asuh'.'kode_anak_asuh' = 'ska'.'kode_anak_asuh')      
              ->join('LEFT JOIN', 'calon_keluarga_asuh', 
                'calon_keluarga_asuh'.'kode_calon_keluarga_asuh' = 'ska'.'kode_calon_keluarga_asuh')
              ->join('LEFT JOIN', 'calon', 
                'calon'.'kode_calon' = 'anak_asuh'.'kode_calon')
              ->limit(2); 
        $command = $query->createCommand();
        $data = $command->queryAll();
        echo Json::encode($kodeSka);
    }

【问题讨论】:

    标签: php mysql yii yii2 left-join


    【解决方案1】:

    连接中表名的引号错误

    你应该使用'anak_asuh.kode_anak_asuh' = 'ska.kode_anak_asuh' 而不是

    'anak_asuh'.'kode_anak_asuh' = 'ska'.'kode_anak_asuh'

      public function actionGetSka($kodeSka)
          {
              $query = new Query;
              $query->select(['ska.no_ska'
                ,'ska.tgl_ska'
                ,'ska.kode_anak_asuh'
                ,'anak_asuh.kode_calon'
                ,'calon.nama_calon'
                ,'ska.kode_calon_keluarga_asuh'
                ,'calon_keluarga_asuh.nama'
                ,'calon_keluarga_asuh.jenis_kelamin'
                ,'calon_keluarga_asuh.pekerjaan'
                ,'calon_keluarga_asuh.alamat'])  
                    ->from('ska')
                    ->join('LEFT JOIN', 'anak_asuh', 'anak_asuh.kode_anak_asuh' = 'ska.kode_anak_asuh')      
                    ->join('LEFT JOIN', 'calon_keluarga_asuh', 'calon_keluarga_asuh.kode_calon_keluarga_asuh' = 'ska.kode_calon_keluarga_asuh')
                    ->join('LEFT JOIN', 'calon', 'calon.kode_calon' = 'anak_asuh.kode_calon')
                    ->limit(2); 
              $command = $query->createCommand();
              $data = $command->queryAll();
              echo Json::encode($kodeSka);
          }
    

    【讨论】:

    • 很奇怪..我已经在其他人之前发布了正确的解决方案,并正确解释了错误原因,你标记为接受其他人没有任何解释,实际上是为我复制的代码..如果我错了,你至少可以告诉我..
    • 兄弟,你和我的答案是不同的,他接受谁的答案取决于提问者,但你仍然否决了我的这个和其他答案:)
    • 我没有看到明显的差异。在答案中......外观的一部分..
    【解决方案2】:

    试试这个:

    public function actionGetSka($kodeSka)
        {
            $query = new Query;
            $query->select(['ska.no_ska','ska.tgl_ska','ska.kode_anak_asuh','anak_asuh.kode_calon','calon.nama_calon','ska.kode_calon_keluarga_asuh','calon_keluarga_asuh.nama','calon_keluarga_asuh.jenis_kelamin','calon_keluarga_asuh.pekerjaan','calon_keluarga_asuh.alamat'])  
                  ->from('ska')
                  ->leftJoin('anak_asuh','anak_asuh.kode_anak_asuh = ska.kode_anak_asuh')
                  ->leftJoin('calon_keluarga_asuh','calon_keluarga_asuh.kode_calon_keluarga_asuh = ska.kode_calon_keluarga_asuh')
                  ->leftJoin('calon','calon.kode_calon = anak_asuh.kode_calon')
                  ->limit(2); 
            $command = $query->createCommand();
            $data = $command->queryAll();
            echo Json::encode($kodeSka);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      • 2016-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多