Страница 1 из 1

Вывод из bd списка записей по определенному значению

Добавлено: 2019.11.03, 16:12
andrej3337
Здравствуйте.

Использую базу от вордпресса, а там в таблице wp_post кроме постов чего только нет. В админке выводится из этого добра список, но хотелось бы видеть только посты. В таблице есть колонка 'post_type', в которой посты имеют значение 'post'. В контроллере сделал как ниже, но всеравно выводится как и по умолчанию все. Подскажите пожалуйста куда копать?

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

    public function actionIndex()
    {
        $searchModel = new PostsSearch();
        $dataProvider = $searchModel->search(WpPosts::find()->where(['post_type' => 'post'])->all());
        return $this->render('index', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
    }

Re: Вывод из bd списка записей по определенному значению

Добавлено: 2019.11.03, 22:41
dmg
Посмотрите что у вас в методе search класса PostSearch.

Re: Вывод из bd списка записей по определенному значению

Добавлено: 2019.11.03, 22:45
yiiliveext
andrej3337 писал(а): 2019.11.03, 16:12 Здравствуйте.

Использую базу от вордпресса, а там в таблице wp_post кроме постов чего только нет. В админке выводится из этого добра список, но хотелось бы видеть только посты. В таблице есть колонка 'post_type', в которой посты имеют значение 'post'. В контроллере сделал как ниже, но всеравно выводится как и по умолчанию все. Подскажите пожалуйста куда копать?

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

    public function actionIndex()
    {
        $searchModel = new PostsSearch();
        $dataProvider = $searchModel->search(['PostsSearch' => ['post_type' => 'post']]);
        return $this->render('index', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
    }

Re: Вывод из bd списка записей по определенному значению

Добавлено: 2019.11.05, 16:49
unknownby
Что насчет такого?

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

    public function actionIndex()
    {
        $searchModel = new PostsSearch;
        $dataProvider = $searchModel->search(\Yii::$app->getRequest()->get());
        return $this->render('index', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
    }
Внутри поиска PostsSearch указать условие

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

$query = WpPosts::find()
	->from([WpPosts::TABLE_ALIAS => WpPosts::tableName()])
	->where(['post_type' => 'post'])

Re: Вывод из bd списка записей по определенному значению

Добавлено: 2019.11.05, 22:07
andrej3337
unknownby писал(а): 2019.11.05, 16:49 Что насчет такого?
Странно, что мое сообщение вчера не прошло. Предыдущий вариант от yiiliveext сработал, спасибо

Re: Вывод из bd списка записей по определенному значению

Добавлено: 2019.11.06, 10:53
unknownby
andrej3337 писал(а): 2019.11.05, 22:07
unknownby писал(а): 2019.11.05, 16:49 Что насчет такого?
Странно, что мое сообщение вчера не прошло. Предыдущий вариант от yiiliveext сработал, спасибо
Судя по search у тебя не будет поиска внутри страницы Index, а если сделать как я написал, тогда будет искать внутри грида, который выводится на индексе.

Re: Вывод из bd списка записей по определенному значению

Добавлено: 2019.11.06, 11:42
andrej3337
unknownby писал(а): 2019.11.06, 10:53 Судя по search у тебя не будет поиска внутри страницы Index, а если сделать как я написал, тогда будет искать внутри грида, который выводится на индексе.
Для меня пока yii темный лес, только по примерам гугленным двигаюсь, поэтому не понимаю что такое грид. Но как и ранее отвечал, тот код, что дал yiiliveext рабочий, в админке на редактирование вывелись только статьи, из этой же таблицы по аналогии вывел отдельно статические страницы.

Там дальше приключения начинаются с рубриками, они в одной таблице с тегами вроде - все вперемешку, но я их без труда выдерну даже вручную. Вот не могу понять как назначить статьи имеющимся рубрикам. В вордпрессе, на сколько читал, они связываются еще через 2 таблицы...

Re: Вывод из bd списка записей по определенному значению

Добавлено: 2019.11.06, 13:20
unknownby
С этим подсказать не смогу, могу предположить только, что таблица с рубриками связывается с таблицей статей через сводную таблицу
id_сводной_таблицы, id_рубрики, id_статьи

Re: Вывод из bd списка записей по определенному значению

Добавлено: 2019.11.06, 14:13
andrej3337
Да тут кто-то задавался этим вопросом, но там что-то космическое было предложено по формированию массивов из чего куда почему - нипанятна ничего ) и к сожалению, готовых решений не нагуглил. Надо в структуре бд вордпресса сидеть разбираться откуда ноги там у циферок растут, м.б. и догоню потом

Re: Вывод из bd списка записей по определенному значению

Добавлено: 2019.11.06, 20:12
yiiliveext
unknownby писал(а): 2019.11.06, 10:53 Судя по search у тебя не будет поиска внутри страницы Index, а если сделать как я написал, тогда будет искать внутри грида, который выводится на индексе.
Это решается так

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

$dataProvider = $searchModel->search(array_merge(\Yii::$app->request->get(), ['PostsSearch' => ['post_type' => 'post']]));

Re: Вывод из bd списка записей по определенному значению

Добавлено: 2019.11.11, 09:58
unknownby
yiiliveext писал(а): 2019.11.06, 20:12
unknownby писал(а): 2019.11.06, 10:53 Судя по search у тебя не будет поиска внутри страницы Index, а если сделать как я написал, тогда будет искать внутри грида, который выводится на индексе.
Это решается так

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

$dataProvider = $searchModel->search(array_merge(\Yii::$app->request->get(), ['PostsSearch' => ['post_type' => 'post']]));
Решается то любая проблема, просто каким образом он будет реализовывать дальше в своём проекте это.
Можно передавать внутри экшенов 'post_type', а можно передавать внутри экшена какую-то переменную, а в зависимости от переменной будет внутри search-а искаться что нужно :D
Типо такого

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

$dataProvider = $searchModel->search(\Yii::$app->request->get(), $post_type);

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

$query = WpPosts::find()
	->from([WpPosts::TABLE_ALIAS => WpPosts::tableName()])
	->where(['post_type' => $post_type])
И это всего лишь один из множества способов решения данного вопроса. ;)
Подойдет фраза "я художник - я так вижу" :D