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

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
andrej3337
Сообщения: 46
Зарегистрирован: 2019.11.03, 16:02

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

Сообщение 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,
        ]);
    }
dmg
Сообщения: 685
Зарегистрирован: 2012.10.15, 03:09

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

Сообщение dmg »

Посмотрите что у вас в методе search класса PostSearch.
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

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

Сообщение 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,
        ]);
    }
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

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

Сообщение 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'])
andrej3337
Сообщения: 46
Зарегистрирован: 2019.11.03, 16:02

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

Сообщение andrej3337 »

unknownby писал(а): 2019.11.05, 16:49 Что насчет такого?
Странно, что мое сообщение вчера не прошло. Предыдущий вариант от yiiliveext сработал, спасибо
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

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

Сообщение unknownby »

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

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

Сообщение andrej3337 »

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

Там дальше приключения начинаются с рубриками, они в одной таблице с тегами вроде - все вперемешку, но я их без труда выдерну даже вручную. Вот не могу понять как назначить статьи имеющимся рубрикам. В вордпрессе, на сколько читал, они связываются еще через 2 таблицы...
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

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

Сообщение unknownby »

С этим подсказать не смогу, могу предположить только, что таблица с рубриками связывается с таблицей статей через сводную таблицу
id_сводной_таблицы, id_рубрики, id_статьи
andrej3337
Сообщения: 46
Зарегистрирован: 2019.11.03, 16:02

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

Сообщение andrej3337 »

Да тут кто-то задавался этим вопросом, но там что-то космическое было предложено по формированию массивов из чего куда почему - нипанятна ничего ) и к сожалению, готовых решений не нагуглил. Надо в структуре бд вордпресса сидеть разбираться откуда ноги там у циферок растут, м.б. и догоню потом
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

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

Сообщение yiiliveext »

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

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

$dataProvider = $searchModel->search(array_merge(\Yii::$app->request->get(), ['PostsSearch' => ['post_type' => 'post']]));
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

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

Сообщение 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
Закрыто