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_codes для rcv_person
области act_req_recv таблицы. Обе таблицы имеют одно общее поле, которое является act_id
и не является первичным ключом для обеих таблиц.
Теперь я могу найти его с помощью обычной команды mysql scriptlike ниже, где $ 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 View:
array(
'name' => 'actId',
'type'=> 'raw',
'value' => ActivityRecord::getAR_code($model->actId),
'htmlOptions' => array('style' => "text-align:left;"),
),
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();
}
CDetailView
? Запрос выглядит нормально, возможно, вы неправильно используете результат.