Я получаю сообщение об ошибке при вызове вышеупомянутого метода во время использования activeForm dropDownList. Что странно, что я уже сделал другие dropDownLists аналогичным образом, и они работают нормально.
Ошибка:
PHP Warning – yii\base\ErrorException
strcmp() expects parameter 2 to be string, object given
Код _form для генерации списка выглядит следующим образом:
$lista_unidades = ArrayHelper::map(Unidad::find()->where('institucion="Carabineros de Chile"')->asArray()->all(), 'id_unidad', 'nombre');
asort($lista_unidades);
$form->field($model, 'id_unidad_que_diligencia')->dropDownList($lista_unidades, ['prompt' => 'Seleccione...']);
Yii2 предоставляет следующую информацию об ошибке (ссылки на изображения):
Любая помощь будет оценена.
РЕДАКТИРОВАТЬ:
Модельный класс:
<?php
namespace app\models;
use Yii;
use yii\behaviors\TimestampBehavior;
use yii\db\Expression;
/**
* This is the model class for table "orden_judicial".
*
* @property string $id_orden_judicial
* @property string $causa_rit
* @property string $causa_ruc
* @property string $causa_rol
* @property string $fecha_emision
* @property string $tipo
* @property string $estado
* @property string $id_unidad_que_direcciona
* @property string $id_unidad_que_diligencia
* @property string $id_unidad_que_redirecciona
*
* @property AdjuntoOrdenJudicial[] $adjuntoOrdenJudicials
* @property Aviso[] $avisos
* @property Persona[] $rutPersonas
* @property Dilgienciamiento[] $dilgienciamientos
* @property Unidad $idUnidadQueDirecciona
* @property Unidad $idUnidadQueDiligencia
* @property Unidad $idUnidadQueRedirecciona
*/
class OrdenJudicial extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'orden_judicial';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['fecha_emision', 'tipo', 'estado', 'id_unidad_que_direcciona', 'id_unidad_que_diligencia'], 'required'],
[['fecha_emision'], 'safe'],
[['id_unidad_que_direcciona', 'id_unidad_que_diligencia', 'id_unidad_que_redirecciona'], 'integer'],
[['causa_rit', 'causa_ruc', 'causa_rol', 'tipo', 'estado'], 'string', 'max' => 100]
];
}
public function behaviors() {
return [
[
'class' => TimestampBehavior::className(),
'createdAtAttribute' => 'fecha_emision',
'updatedAtAttribute' => false,
'value' => new Expression('NOW()'),
],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id_orden_judicial' => 'Número de orden',
'causa_rit' => 'Causa RIT',
'causa_ruc' => 'Causa RUC',
'causa_rol' => 'Causa ROL',
'fecha_emision' => 'Fecha de Emisión',
'tipo' => 'Tipo',
'estado' => 'Estado',
'id_unidad_que_direcciona' => 'Tribunal o Fiscalía',
'id_unidad_que_diligencia' => 'Unidad Policial',
'id_unidad_que_redirecciona' => 'Unidad que Redirecciona',
];
}
/**
* @return \yii\db\ActiveQuery
*/
public function getAdjuntoOrdenJudicials()
{
return $this->hasMany(AdjuntoOrdenJudicial::className(), ['id_orden_judicial' => 'id_orden_judicial']);
}
/**
* @return \yii\db\ActiveQuery
*/
public function getAvisos()
{
return $this->hasMany(Aviso::className(), ['id_orden_judicial' => 'id_orden_judicial']);
}
/**
* @return \yii\db\ActiveQuery
*/
public function getRutPersonas()
{
return $this->hasMany(Persona::className(), ['rut_persona' => 'rut_persona'])->viaTable('aviso', ['id_orden_judicial' => 'id_orden_judicial']);
}
/**
* @return \yii\db\ActiveQuery
*/
public function getDilgienciamientos()
{
return $this->hasMany(Dilgienciamiento::className(), ['id_orden_judicial' => 'id_orden_judicial']);
}
/**
* @return \yii\db\ActiveQuery
*/
public function getIdUnidadQueDirecciona()
{
return $this->hasOne(Unidad::className(), ['id_unidad' => 'id_unidad_que_direcciona']);
}
/**
* @return \yii\db\ActiveQuery
*/
public function getIdUnidadQueDiligencia()
{
return $this->hasOne(Unidad::className(), ['id_unidad' => 'id_unidad_que_diligencia']);
}
/**
* @return \yii\db\ActiveQuery
*/
public function getIdUnidadQueRedirecciona()
{
return $this->hasOne(Unidad::className(), ['id_unidad' => 'id_unidad_que_redirecciona']);
}
}
И класс контроллера с соответствующим действием:
<?php
namespace app\controllers;
use Yii;
use app\models\OrdenJudicial;
use app\models\OrdenJudicialSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use yii\filters\AccessControl;
/**
* OrdenJudicialController implements the CRUD actions for OrdenJudicial model.
*/
class OrdenJudicialController extends Controller
{
(...)
public function actionCreate()
{
$model = new OrdenJudicial();
$model->estado = "En Creacion";
$idUnidadQueDiligencia = Yii::$app->getUser()->identity->getIdUnidad();
$model->id_unidad_que_diligencia = $idUnidadQueDiligencia;
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id_orden_judicial]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
(...)
}
Может быть ваш id_unidad_que_diligencia
si объект не одним значением.
$idUnidadQueDiligencia = Yii::$app->getUser()->identity->getIdUnidad();
$model->id_unidad_que_diligencia = $idUnidadQueDiligencia;
попробуйте выполнить эту ситуацию, используя
var_dump($model->id_unidad_que_diligencia)
то, если это не плоское строковое значение, настройте код для получения правильного значения.
id_unidad_que_diligencia
я намеревался установить id_unidad_que_direcciona
. Приложение id_unidad_que_diligencia
из-за попытки добавить другое значение в id_unidad_que_diligencia
когда оно уже установлено. Спасибо!