有人可以解释一下searchYii2中的方法是如何SearchModel工作的吗?我用Gii生成它.这里是:
public function search($params){
$query = MyModel::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
if (!($this->load($params) && $this->validate())) {
return $dataProvider;
}
$this->addCondition($query, 'att1');
$this->addCondition($query, 'att1', true);
$this->addCondition($query, 'att2');
$this->addCondition($query, 'att2', true);
return $dataProvider;
}
Run Code Online (Sandbox Code Playgroud)
这就是我所说的:
$search = new MyModelSearch();
$myModels = $search->search(['att3' => '3']);
Run Code Online (Sandbox Code Playgroud)
无论我在调用中使用什么属性search,我总是得到相同的结果 - 即表中的所有条目.我在这里遗漏了一些我不明白的东西.
任何帮助将非常感激.谢谢.
我试图在Yii2的GridView小部件中为相关模型设置过滤器,但我不断得到错误,因为过滤器值必须是整数.
我跟着这个问题.现在,我有两个型号Services.php和ServiceCharge.php.
在ServiceCharge.php关系设置如下:
public function getServiceName()
{
return $this->hasOne(Services::className(),['id'=>'service_name']);
}
Run Code Online (Sandbox Code Playgroud)
在ServiceChargeSearch.php代码中是这样的:
<?php
namespace app\models;
use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
use app\models\ServiceCharges;
/**
* ServiceChargesSearch represents the model behind the search form about `app\models\ServiceCharges`.
*/
class ServiceChargesSearch extends ServiceCharges
{
/**
* @inheritdoc
*/
public function attributes()
{
// add related fields to searchable attributes
return array_merge(parent::attributes(), ['serviceName.services']);
}
public function rules()
{
return [
[['id'], 'integer'],
[['charges_cash', …Run Code Online (Sandbox Code Playgroud)