您好我正在使用最新版本的xampp,它有MariaDB,当我尝试连接yii 2中的表时,它说我有一个MariaDB异常。请参见下面的截图。
我要做的是通过TrNo加入schead和scstock,查看数据库表的屏幕。
我对JOINING仍然很新,所以我想帮助解决这个异常。
以下是我的联接表的代码。
public static function getFirstYearFirstTerm($currcode){
return Scstock::find()
->select('scstock.*')
->leftJoin('schead', ' `schead.TrNo = scstock.TrNo')
->where(['schead.terms' => '1ST', 'schead.styear' => 1])
->asArray()
->all();
}
它位于具有tableName
功能的ActiveCurriculum.php中。
public static function tableName()
{
// return '{{%ccsubject}}';
return '{{%schead}}';
}
但我认为我在这次交易中没有使用它。
答案 0 :(得分:1)
你引用表格时有一个拼写错误。这条线
->leftJoin('schead', ' `schead.TrNo = scstock.TrNo')
应该阅读
->leftJoin('schead', ' `schead`.`TrNo` = `scstock`.`TrNo`')
或
->leftJoin('schead', ' schead.TrNo = scstock.TrNo')
最好坚持一个或另一个,即你引用所有的表名和列名,或者你不引用它们。
更好的选择是在schead
模型中添加Scstock
作为关系。
public function getSchead() {
return $this->hasOne(Schead::className(), ['TrNo' => 'TrNo']);
}
这会将您的查询减少到:
return Scstock::find()
->select('scstock.*')
->joinWith('schead')
->where(['schead.terms' => '1ST', 'schead.styear' => 1])
->asArray()
->all();
}