SQL查询多个表YII2

时间:2018-07-25 15:47:08

标签: php mysql sql yii2

我有两个tables

在我的搜索模型中,我写了public function frontendProvider(){}为我的视图提供sql查询。

public function frontendProvider()
{

    $query = new Query;
    $query  ->select('strategy_title')  
            ->from('strategy')
            ->join( 'LEFT', 
                'risk_colors',
                'risk_colors.id = risk_colors_id'
            );         
    $provider = new ArrayDataProvider([
        'allModels' => $query->createCommand()->queryAll(),
        'sort' => [
            'defaultOrder' => [
                'risk_colors_id' => SORT_DESC, 

            ],
            'attributes' => [
                'strategy_title', 
                'strategy_description', 
                'strategy_current_money',
                'color_number',
                'risk_colors_id',
            ],
        ],
    ]); 

    return $provider;
}

当我尝试重新加载时,我得到了这个error。我在做什么错了?

2 个答案:

答案 0 :(得分:0)

如果要使用LEFT JOIN,则应使用leftJoin()方法:

$query->select('strategy_title')  
      ->from('strategy')
      ->leftJoin( 
          'risk_colors',
          'risk_colors.id = risk_colors_id'
      );  

答案 1 :(得分:0)

使用join()方法,您必须传递完整的JOIN类型,因此在这种情况下,您应该使用LEFT JOIN。否则,您可以使用esplicit leftJoin()方法

    ..... 
    ->join('LEFT JOIN',
          'risk_colors',
            'risk_colors.id = risk_colors_id');