YiiFramework Unknown component ID: db бьюсь целый день ($news = Adm::find()->all();)

kirillRoute

Новичок
всем добрый вечер.
не могу получить все строки всё делал по мануалу.
таблица называется adm.
путь models/Adm.php
исходник:
PHP:
namespace app\models;

use yii\db\ActiveRecord;

class Adm extends ActiveRecord
{
}
в самом контроллере запись:
PHP:
namespace app\controllers;

use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use yii\web\Request;
use yii\filters\VerbFilter;
use app\models\LoginForm;
use app\models\ContactForm;
use app\models\Adm;
use app\models\VeryForm;
use yii\helpers\Html;

class SiteController extends Controller
{
#...подключенные action...

public function actionNews(){
        $news = Adm::find()->all();
        return $this->render('news',['news' => $news]);
    }

}
перехожу на http://site.ru/news и ругается:
Unknown component ID: db
 

kirillRoute

Новичок
db:
PHP:
return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=math',
    'username' => 'root',
    'password' => 'root',
    'charset' => 'utf8',
];
web:
PHP:
$params = require(__DIR__ . '/params.php');

$config = [
    'id' => 'basic',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'defaultRoute' => 'site/index',
    'components' => [
        'request' => [
            // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
            'cookieValidationKey' => '6545rtyffrd',
            'baseUrl' => '',
        ],
        'cache' => [
            'class' => 'yii\caching\FileCache',
        ],
        'user' => [
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
        ],
        'errorHandler' => [
            'errorAction' => 'site/error',
        ],
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            // send all mails to a file by default. You have to set
            // 'useFileTransport' to false and configure a transport
            // for the mailer to send real emails.
            'useFileTransport' => true,
        ],
        'log' => [
            #'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],

        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
            '<action>' => 'site/<action>',
            ],
        ],

    ],
    'params' => $params,
];

if (YII_ENV_DEV) {
    // configuration adjustments for 'dev' environment
    $config['bootstrap'][] = 'debug';
    $config['modules']['debug'] = [
        'class' => 'yii\debug\Module',
        // uncomment the following to add your IP if you are not connecting from localhost.
        //'allowedIPs' => ['127.0.0.1', '::1'],
    ];

    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
        // uncomment the following to add your IP if you are not connecting from localhost.
        //'allowedIPs' => ['127.0.0.1', '::1'],
    ];
}

return $config;
 

kirillRoute

Новичок
и всё же. такая инфа практически везде. он ругается на выборку ...->all()
 

fixxxer

К.О.
Партнер клуба
А я yii не пользуюсь. Я просто поймал тебя на вранье. :)

Но я уверен, что если ты выбросишь копипасту с видеоуроков и сделаешь строго по официальному мануалу, все будет работать.

Вообще, проблема у тебя где-то в конфиге, это понятно по скриншоту бэктрейса даже без какого-либо знания yii. Посмотри, как писать правильный конфиг, в официальной документации.
 

Andkorol

Новичок
DAO:
Because a DB connection often needs to be accessed in different places, a common practice is to configure it in terms of an application component like the following:
PHP:
return [
    // ...
    'components' => [
        // ...
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=example',
            'username' => 'root',
            'password' => '',
            'charset' => 'utf8',
        ],
    ],
    // ...
];
AR:
By default, Active Record uses the db application component as the DB connection to access and manipulate the database data. As explained in Database Access Objects, you can configure the db component in the application configuration like shown below,
PHP:
return [
    'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=testdb',
            'username' => 'demo',
            'password' => 'demo',
        ],
    ],
];
 

kirillRoute

Новичок
всё равно :(
PHP:
return [
    'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=math',
            'username' => 'root',
            'password' => 'root',
        ],
    ],
];
 

Andkorol

Новичок
Да открой уже родной конфиг из чистой копии фреймворка – и посмотри, как там реализованы настройки подключения к БД.
Что прописано в config/db.php – и как это интегрировано в config/web.php.
 

kirillRoute

Новичок
Да открой уже родной конфиг из чистой копии фреймворка – и посмотри, как там реализованы настройки подключения к БД.
Что прописано в config/db.php – и как это интегрировано в config/web.php.
так я в db.php изменил только подключение, а в web.php изменения коснулись только настройки роутера и всё, так-то всё кристально чисто :(
 

Andkorol

Новичок
а в web.php изменения коснулись только настройки роутера и всё, так-то всё кристально чисто :(
От только не надо πздетьотэтого...
Вот код из свежей копии basic:
PHP:
<?php

$params = require(__DIR__ . '/params.php');

$config = [
    'id' => 'basic',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'components' => [
        'request' => [
            // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
            'cookieValidationKey' => '',
        ],
        'cache' => [
            'class' => 'yii\caching\FileCache',
        ],
        'user' => [
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
        ],
        'errorHandler' => [
            'errorAction' => 'site/error',
        ],
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            // send all mails to a file by default. You have to set
            // 'useFileTransport' to false and configure a transport
            // for the mailer to send real emails.
            'useFileTransport' => true,
        ],
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'db' => require(__DIR__ . '/db.php'),   // <–– ?!?!?!
        /*
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
            ],
        ],
        */
    ],
    'params' => $params,
];

if (YII_ENV_DEV) {
    // configuration adjustments for 'dev' environment
    $config['bootstrap'][] = 'debug';
    $config['modules']['debug'] = [
        'class' => 'yii\debug\Module',
        // uncomment the following to add your IP if you are not connecting from localhost.
        //'allowedIPs' => ['127.0.0.1', '::1'],
    ];

    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
        // uncomment the following to add your IP if you are not connecting from localhost.
        //'allowedIPs' => ['127.0.0.1', '::1'],
    ];
}

return $config;
Куда ж «кристально чисто» из твоего конфига делась строка с require db.php?
P.S.: у тебя там даже пропуск строки в этом самом месте.
 

kirillRoute

Новичок
так я блин вчера скачал полную yii2 с оффсайта куда уже кристальней. по гайду изменил роутинг и валид кей.
сейчас попробую скопипастить данный конф, надеюсь поможет
 

kirillRoute

Новичок
PHP:
<?php

$params = require(__DIR__ . '/params.php');

$config = [
    'id' => 'basic',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'components' => [
        'request' => [
            // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
            'cookieValidationKey' => 'asdasd232',
        ],
        'cache' => [
            'class' => 'yii\caching\FileCache',
        ],
        'user' => [
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
        ],
        'errorHandler' => [
            'errorAction' => 'site/error',
        ],
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            // send all mails to a file by default. You have to set
            // 'useFileTransport' to false and configure a transport
            // for the mailer to send real emails.
            'useFileTransport' => true,
        ],
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'db' => require(__DIR__ . '/db.php'),   // <–– ?!?!?!

        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
            '<action>' => 'site/<action>',
            ],
        ],
    ],
    'params' => $params,
];

if (YII_ENV_DEV) {
    // configuration adjustments for 'dev' environment
    $config['bootstrap'][] = 'debug';
    $config['modules']['debug'] = [
        'class' => 'yii\debug\Module',
        // uncomment the following to add your IP if you are not connecting from localhost.
        //'allowedIPs' => ['127.0.0.1', '::1'],
    ];

    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
        // uncomment the following to add your IP if you are not connecting from localhost.
        //'allowedIPs' => ['127.0.0.1', '::1'],
    ];
}

return $config;
 

Andkorol

Новичок
Да строчку просто одну в свой старый конфиг добавь – и всё.
Нафига ты всю простынь копипастишь?!?
 
Сверху