yii中没有主键的关系mysql表搜索(调用非整数字段)

2ul0zpep  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(350)

表一:

ar_codes
----------
ar_id (primary key),
act_id,
ar_code,
status

表二:

act_req_recv
----------
rcv_id (primary key),
act_id,
rcv_person,
status

现在我需要找到 ar_code 从ar\ U codes表中为 rcv_person act\ U req\ U recv表格的字段。两个表都有一个公共字段 act_id 并且不是表的两个主键。
现在我可以通过普通的mysql scriptlike bellow命令找到它,其中$actid包含值。如何在yii中找到这个值?

SELECT ar_code FROM ar_codes WHERE act_id=$actId

我试着通过模型的函数调用来找到它。但由于场上没有pk,所以结果不会到来。

public static function getAR_code($actId) {
    $ActCode = Yii::app()->db->createCommand()
            ->select('ar_code')
            ->from('{{ar_codes}}')
            ->where('act_id=' . (int) $actId)
            ->queryAll();
    return $ActCode;
}

函数运行时出现此错误:
[错误][php]数组到字符串转换(d:\xampp\htdocs\framework\yii1.1.19\zii\widgets\cdetailview)。php:240)
cdetail视图代码是:

array(
    'name' => 'actId',
    'type'=> 'raw',
    'value' => ActivityRecord::getAR_code($model->actId), 
    'htmlOptions' => array('style' => "text-align:left;"),
),
kmpatx3s

kmpatx3s1#

queryAll() 返回行数组,因此它实际上是数组数组。比如:

[
    ['ar_code' => 123],
]

如果要查询单个值(例如 123 ),您应该使用 queryScalar() -它将从第一行的第一列返回值:

public static function getAR_code($actId) {
    return Yii::app()->db->createCommand()
            ->select('ar_code')
            ->from('{{ar_codes}}')
            ->where('act_id=' . (int) $actId)
            ->queryScalar();
}

相关问题