hola amigos una pregunta simple, en el cgridview si quiero buscar Pancho Perez en mi columna nombre y apellidos aunque este existe no me devuelve ningun resultado, será que no me permite espacios en las búsquedas? y otra cosa, en yii 1 no tenia que escribir mi criterio de búsqueda integramente para que este me filtrara y en el 2 si, es normal esto o existe una manera de mejorarlo?? gracias
<?php
namespace app\models;
use Yii;
/**
* This is the model class for table "n_municipio".
*
* @property integer $id_municipio
* @property string $mun_nombre
* @property integer $provincia_fk
*
* @property Entidad[] $entidads
* @property NProvincia $provinciaFk
*/
class NMunicipio extends \yii\db\ActiveRecord
{
public $prov_siglas;
/**
* @inheritdoc
*/
public static function tableName()
{
return 'n_municipio';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['mun_nombre', 'provincia_fk'], 'required'],
[['provincia_fk'], 'integer'],
[['mun_nombre'], 'string', 'max' => 255]
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id_municipio' => Yii::t('app', 'Id Municipio'),
'mun_nombre' => Yii::t('app', 'Nombre'),
'provincia_fk' => Yii::t('app', 'Provincia'),
'prov_siglas' => Yii::t('app', 'Provincia'),
];
}
/**
* @return \yii\db\ActiveQuery
*/
public function getEntidads()
{
return $this->hasMany(Entidad::className(), ['municipio_fk' => 'id_municipio']);
}
/**
* @return \yii\db\ActiveQuery
*/
public function getProvinciaFk()
{
return $this->hasOne(NProvincia::className(), ['id_prov' => 'provincia_fk']);
}
}
y aqui mi search
<?php
namespace app\models;
use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
use app\models\NMunicipio;
/**
* NMunicipioSearch represents the model behind the search form about `app\models\NMunicipio`.
*/
class NMunicipioSearch extends NMunicipio
{
public $prov_siglas;
/**
* @inheritdoc
*/
public function rules()
{
return [
[['id_municipio', 'provincia_fk'], 'integer'],
[['mun_nombre','prov_siglas'], 'safe'],
];
}
/**
* @inheritdoc
*/
public function scenarios()
{
// bypass scenarios() implementation in the parent class
return Model::scenarios();
}
/**
* Creates data provider instance with search query applied
*
* @param array $params
*
* @return ActiveDataProvider
*/
public function search($params)
{
$query = NMunicipio::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$dataProvider->sort->attributes['prov_siglas'] = [
// The tables are the ones our relation are configured to
// in my case they are prefixed with "tbl_"
'asc' => ['n_municipio.provincia_fk' => SORT_ASC],
'desc' => ['n_municipio.provincia_fk' => SORT_DESC],
];
if (!($this->load($params) && $this->validate())) {
return $dataProvider;
}
$query->joinWith(['provinciaFk']);
$query->andFilterWhere([
'id_municipio' => $this->id_municipio,
'n_provincia.prov_siglas' => $this->prov_siglas,
]);
$query->andFilterWhere(['like', 'mun_nombre', $this->mun_nombre]);
return $dataProvider;
}
}