Php 连接表Yii 2-MariaDB异常
您好,我使用的是最新版本的xampp,它包含了MariaDB,当我试图在yii2中连接表时,它说我有一个MariaDB异常。请参见下面的屏幕截图。 我试图做的是通过TrNo加入schead和scstock,请参见数据库表的屏幕 谢德 SCSTOCK 我还是一个新加入的人,所以我想帮助解决这个例外 下面是我的联接表的代码Php 连接表Yii 2-MariaDB异常,php,mysql,join,yii2,Php,Mysql,Join,Yii2,您好,我使用的是最新版本的xampp,它包含了MariaDB,当我试图在yii2中连接表时,它说我有一个MariaDB异常。请参见下面的屏幕截图。 我试图做的是通过TrNo加入schead和scstock,请参见数据库表的屏幕 谢德 SCSTOCK 我还是一个新加入的人,所以我想帮助解决这个例外 下面是我的联接表的代码 public static function getFirstYearFirstTerm($currcode){ return Scstock::find()
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();
}
它位于activecourseum.php中的中,具有tableName
函数
public static function tableName()
{
// return '{{%ccsubject}}';
return '{{%schead}}';
}
但是我想我没有在这笔交易中使用它。你在表格的报价中有一个输入错误。线路
->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();
}
请分享你的执行错误截图。它在第一个截图中。我找不到任何截图。我只看到你的密码…:(哦,很抱歉,可能它没有显示在您的计算机上。我已经在imgur中上载了它。这里:我没有访问imgur的权限。如果可以的话,请复制粘贴???如何在它们之间添加关系?此代码的问题是,这两个表之间没有显式关系,只是它具有相同的TrNo,所以我别无选择,只能使用。)leftJoin。您可以在代码中添加关系,而数据库中没有关系。我已使用此信息更新了答案。
return Scstock::find()
->select('scstock.*')
->joinWith('schead')
->where(['schead.terms' => '1ST', 'schead.styear' => 1])
->asArray()
->all();
}