Не работает поиск в гриде[Решено]

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
svil
Сообщения: 545
Зарегистрирован: 2018.02.12, 22:41

Не работает поиск в гриде[Решено]

Сообщение svil » 2019.06.21, 20:04

Пока не добавила выборку по basket = 0 для выборке в грид из контроллера в вид index - поиск работал.
Как, извиняюсь, и рыбку съесть и все остальное ...?
Контроллер

Код: Выделить всё

public function actionIndex()
    {
        $searchModel = new CompaniesSearch();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
        $dataProvider->query->where(['basket'=> '0']);
        $data_ = Requisites::find()->all();
        foreach ($data_ as $value) {
            $data[$value->id]=$value->company_id;

        }

        return $this->render('index', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
            'data' => $data
        ]);
    }
Модель

Код: Выделить всё

<?php

namespace app\models;

use Yii;

/**
 * This is the model class for table "companies".
 *
 * @property int $id
 * @property string $name Краткое наименование
 * @property int $basket
 *
 * @property Requisites[] $requisites
 */
class Companies extends BaseActiveRecord
{
    /**
     * {@inheritdoc}
     */
    public $requisitesName;

    public static function tableName()
    {
        return 'companies';
    }

    /**
     * {@inheritdoc}
     */
    public function rules()
    {
        return [
            [['name'], 'required'],
            ['name', 'unique'],
            [['name'], 'string'],
            [['basket'], 'integer'],
        ];
    }


    /**
     * {@inheritdoc}
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'name' => 'Краткое наименование организации',
            'basket' => 'Удаление (отметить, если удалить)',
        ];
    }

    /**
     * @return \yii\db\ActiveQuery
     */


    public function getJobs()
    {
        return $this->hasMany(Jobs::className(), ['company_id' => 'id']);
    }

    public function getRequisites()
    {
        return $this->hasMany(Requisites::className(), ['company_id' => 'id']);
    }


    public function getUsers() {

        return $this->hasMany(Users::className(), ['id' => 'user_id'])
            ->viaTable(
                'Jobs',
                ['company_id' => 'companies.id'],
                function ($query) {
                    $query->andWhere(['users.id' => 'jobs.id']);
                });
    }
    /* Геттер для полного наименования компании */
    public function getRequisitesName() {
        return $this->Requisites->telfax;
    }


}

Модель для поиска

Код: Выделить всё

<?php

namespace app\models;

use yii\base\Model;
use yii\data\ActiveDataProvider;
use app\models\Companies;

/**
 * CompaniesSearch represents the model behind the search form of `app\models\Companies`.
 */
class CompaniesSearch extends Companies
{
    /**
     * {@inheritdoc}
     */
    public function rules()
    {
        return [
            [['id'], 'integer'],
            [['name'], '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 = Companies::find();

        // add conditions that should always apply here

        $dataProvider = new ActiveDataProvider([
            'query' => $query,
        ]);

        $this->load($params);

        if (!$this->validate()) {
            // uncomment the following line if you do not want to return any records when validation fails
            // $query->where('0=1');
            return $dataProvider;
        }

        // grid filtering conditions
        $query->andFilterWhere([
            'id' => $this->id,
           // 'basket' => $this->basket,
        ]);

        $query->andFilterWhere(['like', 'name', $this->name]);

        return $dataProvider;
    }
}
Вид

Код: Выделить всё

<?php

use yii\helpers\Html;
use yii\grid\GridView;

/* @var $this yii\web\View */
/* @var $searchModel app\models\CompaniesSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */

$this->title = 'Организации';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="companies-index">

    <h1><?= Html::encode($this->title) ?></h1>

    <p>
        <?= Html::a('Добавить Организацию', ['create'], ['class' => 'btn btn-success']) ?>
    </p>



    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],

            'id',
            'name:ntext',

            ['class' => 'yii\grid\ActionColumn'],
            [
                'class' => 'yii\grid\ActionColumn',
                'template' => '{confirm}',
                'visibleButtons' => [
                    'confirm' => true,
                ],
                'buttons' => [
                    'confirm' => function ($data, $dataProvider) {

                        return Html::a('Реквизиты', ['/requisites/index', 'company_id'=>$dataProvider->id], ['class' => 'btn btn-primary']);
                    },
                ],

            ],
        ],
    ]); ?>


</div>
Последний раз редактировалось svil 2019.06.24, 12:16, всего редактировалось 1 раз.

masson
Сообщения: 497
Зарегистрирован: 2012.07.03, 15:59

Re: Не работает поиск в гриде

Сообщение masson » 2019.06.21, 20:13

$dataProvider->query->andWhere(['basket'=> '0']);

rosswe
Сообщения: 90
Зарегистрирован: 2017.01.09, 03:27
Откуда: Ставрополь
Контактная информация:

Re: Не работает поиск в гриде

Сообщение rosswe » 2019.06.21, 20:19

Поиск работал.
Как, извиняюсь, и рыбку съесть и все остальное ...?
//
тут не телепаты, ходите решение четко и понятно объясните.
вашу проблему , предоставьте код
в студию !..

p$- пока не лишь понятно что вы используете дебу или убунту

Аватара пользователя
svil
Сообщения: 545
Зарегистрирован: 2018.02.12, 22:41

Re: Не работает поиск в гриде

Сообщение svil » 2019.06.22, 00:47

masson, спасибо, заработало

Аватара пользователя
Dominus
Сообщения: 799
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Не работает поиск в гриде

Сообщение Dominus » 2019.06.22, 05:43

svil писал(а):
2019.06.21, 20:04
...
Как, извиняюсь, и рыбку съесть и все остальное ...?
...
Повеселило))
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!

Ответить