почему рейтинг нулл? как правильно вывести данные с таблицы

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

как мне получить по гет запросу данные

Сообщение cqfmkapb »

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

    public function actionWall(){

       return User::find()->where([])->one();
    }
как мне получить по гет запросу данные json с данными
чтобы вывел данные пользователя по логину
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: как мне получить по гет запросу данные

Сообщение yiiliveext »

Учитесь четко формулировать проблему :D
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: как мне получить по гет запросу данные

Сообщение cqfmkapb »

хочу по апи получить
по типу такого
// вернёт все поля объявленные в fields()
http://localhost/users

// вернёт только поля id и email, если они объявлены в методе fields()
http://localhost/users?fields=id,email

// вернёт все поля объявленные в fields() и поле profile если оно указано в extraFields()
http://localhost/users?expand=profile

// вернёт только id, email и profile, если они объявлены в fields() и extraFields()
http://localhost/users?fields=id,email&expand=profile

как такое сделать?
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: как мне получить по гет запросу данные

Сообщение cqfmkapb »

{
"id": 2,
"email": "2@2.ru",
"profile": {
"user_id": 2,
"name": null,
"public_email": null,
"gravatar_email": null,
"gravatar_id": null,
"location": null,
"website": null,
"bio": null,
"timezone": null
}
}

почему выводит данные 2 пользователя, хотя я залосненный под первым
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: как мне получить по гет запросу данные

Сообщение yiiliveext »

Гуглите Yii2 REST API
Чтобы выводило текущего
return User::find()->where(['id' => Yii::$app->user->id])->one();
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: как по логину получить данные?

Сообщение cqfmkapb »

public function actionWall(){
$user = Yii::$app->user;
return User::find()->where(['user_id' => $user->username])->one();
}
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: как по логину получить данные?

Сообщение cqfmkapb »

public function actionWall($login){
$user = Yii::$app->user;
return User::find()->where(['user_id' => $user->id])->one
}
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

как понять в чем проблема?

Сообщение cqfmkapb »

public function actionWall(){
var_dump($login); exit;

}
почему тут нулл

public function actionWall($login){
var_dump($login); exit;

}
а тут 404 ошибка
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: как понять в чем проблема?

Сообщение maleks »

В первом то понятно, переменная неопределена, поэтому null.

Включите при разработке девелоперский уровень показа ошибок
Yii2 universal module sceleton - for basic and advanced templates
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: как понять в чем проблема?

Сообщение cqfmkapb »

yii\web\HttpException:404 yii\web\NotFoundHttpException: Page not found. in /web/yii2/vendor/yiisoft/yii2/web/Request.php:284
Stack trace:
#0 /web/yii2/vendor/yiisoft/yii2/web/Application.php(82): yii\web\Request->resolve()
#1 /web/yii2/vendor/yiisoft/yii2/base/Application.php(386): yii\web\Application->handleRequest(Object(yii\web\Request))
#2 /web/yii2/api/web/index.php(17): yii\base\Application->run()
#3 {main}
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

помогите решить

Сообщение cqfmkapb »

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

    public function actionWall($login){
        $user = User::find()->where(['login' => $login])->one();
        if ($user) {
            return $user;
        }
        throw new NotFoundHttpException(Yii::t('app', 'The requested user does not exist.'));
    }
{
"name": "Exception",
"message": "Call to undefined method yii\\web\\User::find()",
"code": 0,
"type": "Error",
"file": "/web/yii2/api/modules/v1/controllers/UserController.php",
"line": 19,
"stack-trace": [
"#0 [internal function]: api\\modules\\v1\\controllers\\UserController->actionWall('prog1')",
"#1 /web/yii2/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)",
"#2 /web/yii2/vendor/yiisoft/yii2/base/Controller.php(157): yii\\base\\InlineAction->runWithParams(Array)",
"#3 /web/yii2/vendor/yiisoft/yii2/base/Module.php(528): yii\\base\\Controller->runAction('wall', Array)",
"#4 /web/yii2/vendor/yiisoft/yii2/web/Application.php(103): yii\\base\\Module->runAction('v1/user/wall', Array)",
"#5 /web/yii2/vendor/yiisoft/yii2/base/Application.php(386): yii\\web\\Application->handleRequest(Object(yii\\web\\Request))",
"#6 /web/yii2/api/web/index.php(17): yii\\base\\Application->run()",
"#7 {main}"
]
}
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: помогите решить

Сообщение rak »

namespace для класса User не тот
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: как понять в чем проблема?

Сообщение rak »

cqfmkapb писал(а): 2019.12.13, 11:20 yii\web\HttpException:404 yii\web\NotFoundHttpException: Page not found. in /web/yii2/vendor/yiisoft/yii2/web/Request.php:284
Stack trace:
#0 /web/yii2/vendor/yiisoft/yii2/web/Application.php(82): yii\web\Request->resolve()
#1 /web/yii2/vendor/yiisoft/yii2/base/Application.php(386): yii\web\Application->handleRequest(Object(yii\web\Request))
#2 /web/yii2/api/web/index.php(17): yii\base\Application->run()
#3 {main}
а в урл что?
есть ли роут?
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: как по логину получить данные?

Сообщение rak »

что нужно получить то? задачу нужно нормально описать :)
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: как по логину получить данные?

Сообщение cqfmkapb »

public function actionWall($login){
return $login
выводится логин php /v1/users/wall/php
а мне нужно все данные пользователя
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: как по логину получить данные?

Сообщение rak »

cqfmkapb писал(а): 2019.12.13, 15:04 public function actionWall($login){
return $login
выводится логин php /v1/users/wall/php
а мне нужно все данные пользователя
как-то так

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

public function actionWall($login){
    return User::find()->where(['login' => $login])->one();
}
cqfmkapb
Сообщения: 162
Зарегистрирован: 2019.12.08, 15:49

Re: как по логину получить данные?

Сообщение cqfmkapb »

{
"name": "Database Exception",
"message": "SQLSTATE[42703]: Undefined column: 7 ERROR: column \"login\" does not exist\nLINE 1: SELECT * FROM \"user\" WHERE \"login\"=$1\n ^\nThe SQL being executed was: SELECT * FROM \"user\" WHERE \"login\"='prog1'",
"code": 42703,
"type": "yii\\db\\Exception",
"file": "/web/yii2/vendor/yiisoft/yii2/db/Schema.php",
"line": 674,
"stack-trace": [
"#0 /web/yii2/vendor/yiisoft/yii2/db/Command.php(1295): yii\\db\\Schema->convertException(Object(PDOException), 'SELECT * FROM \"...')",
"#1 /web/yii2/vendor/yiisoft/yii2/db/Command.php(1158): yii\\db\\Command->internalExecute('SELECT * FROM \"...')",
"#2 /web/yii2/vendor/yiisoft/yii2/db/Command.php(413): yii\\db\\Command->queryInternal('fetch', NULL)",
"#3 /web/yii2/vendor/yiisoft/yii2/db/Query.php(274): yii\\db\\Command->queryOne()",
"#4 /web/yii2/vendor/yiisoft/yii2/db/ActiveQuery.php(304): yii\\db\\Query->one(NULL)",
"#5 /web/yii2/api/modules/v1/controllers/UserController.php(27): yii\\db\\ActiveQuery->one()",
"#6 [internal function]: api\\modules\\v1\\controllers\\UserController->actionWall('prog1')",
"#7 /web/yii2/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)",
"#8 /web/yii2/vendor/yiisoft/yii2/base/Controller.php(157): yii\\base\\InlineAction->runWithParams(Array)",
"#9 /web/yii2/vendor/yiisoft/yii2/base/Module.php(528): yii\\base\\Controller->runAction('wall', Array)",
"#10 /web/yii2/vendor/yiisoft/yii2/web/Application.php(103): yii\\base\\Module->runAction('v1/user/wall', Array)",
"#11 /web/yii2/vendor/yiisoft/yii2/base/Application.php(386): yii\\web\\Application->handleRequest(Object(yii\\web\\Request))",
"#12 /web/yii2/api/web/index.php(17): yii\\base\\Application->run()",
"#13 {main}"
],
"error-info": [
"42703",
7,
"ERROR: column \"login\" does not exist\nLINE 1: SELECT * FROM \"user\" WHERE \"login\"=$1\n ^"
],
"previous": {
"name": "Exception",
"message": "SQLSTATE[42703]: Undefined column: 7 ERROR: column \"login\" does not exist\nLINE 1: SELECT * FROM \"user\" WHERE \"login\"=$1\n ^",
"code": "42703",
"type": "PDOException",
"file": "/web/yii2/vendor/yiisoft/yii2/db/Command.php",
"line": 1290,
"stack-trace": [
"#0 /web/yii2/vendor/yiisoft/yii2/db/Command.php(1290): PDOStatement->execute()",
"#1 /web/yii2/vendor/yiisoft/yii2/db/Command.php(1158): yii\\db\\Command->internalExecute('SELECT * FROM \"...')",
"#2 /web/yii2/vendor/yiisoft/yii2/db/Command.php(413): yii\\db\\Command->queryInternal('fetch', NULL)",
"#3 /web/yii2/vendor/yiisoft/yii2/db/Query.php(274): yii\\db\\Command->queryOne()",
"#4 /web/yii2/vendor/yiisoft/yii2/db/ActiveQuery.php(304): yii\\db\\Query->one(NULL)",
"#5 /web/yii2/api/modules/v1/controllers/UserController.php(27): yii\\db\\ActiveQuery->one()",
"#6 [internal function]: api\\modules\\v1\\controllers\\UserController->actionWall('prog1')",
"#7 /web/yii2/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)",
"#8 /web/yii2/vendor/yiisoft/yii2/base/Controller.php(157): yii\\base\\InlineAction->runWithParams(Array)",
"#9 /web/yii2/vendor/yiisoft/yii2/base/Module.php(528): yii\\base\\Controller->runAction('wall', Array)",
"#10 /web/yii2/vendor/yiisoft/yii2/web/Application.php(103): yii\\base\\Module->runAction('v1/user/wall', Array)",
"#11 /web/yii2/vendor/yiisoft/yii2/base/Application.php(386): yii\\web\\Application->handleRequest(Object(yii\\web\\Request))",
"#12 /web/yii2/api/web/index.php(17): yii\\base\\Application->run()",
"#13 {main}"
]
}
}
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: как по логину получить данные?

Сообщение rak »

нужно же не бездумно код копировать, а вникать что там написано ;)
вместо поля login нужно подставить то, которое есть в бд
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: как понять в чем проблема?

Сообщение yiiliveext »

Нет правила соответсвующего урлу
Ответить