Форум программистов, компьютерный форум, киберфорум
PHP: Laravel
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818
1

Database [mybase] not configured Laravel 5

29.09.2016, 18:48. Показов 4665. Ответов 34
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
в phpmyadmin создали свою БД, таблицы. после этого в контроллере пытаюсь сделать

PHP
1
$langs = DB::connection('mybase')->select('select * from lang');
получаю

PHP
1
Database [mybase] not configured
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.09.2016, 18:48
Ответы с готовыми решениями:

Подключиться к SQL 2000. BASE_STRING = 'Driver={SQL Server};Server=(local);Database=mybase;
Пишу поключение BASE_STRING = 'Driver={SQL Server};Server=(local);Database=mybase;', тестирую...

SQLite DataBase - почему подчеркивает DataBase db: пишет (DataBase cannot be resolved to a type)
Здравствуйте! помогите понять почему подчеркивает DataBase db; пишет (DataBase cannot be...

MyBase.KeyDown не работает на WebBrowser
Доброе утро! Проблема в следующем. Есть обычный код для осуществления горячих клавиш на форме....

MyBase или Me? Что правильнее использовать?
Доброго времени суток. Делаю свой контрол на основе UserControl. Переопределил OnPaint. Что...

34
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
30.09.2016, 08:24 2
В файле .env доступы прописали? И зачем каждый раз указывать соединение? Или Вы несколько баз используете?
1
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818
30.09.2016, 09:49  [ТС] 3
Цитата Сообщение от Para bellum Посмотреть сообщение
В файле .env доступы прописали? И зачем каждый раз указывать соединение? Или Вы несколько баз используете?
прописаны. На самом деле просто потестить хотела, отправится запрос или нет
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
30.09.2016, 09:56 4
Значит в файле config/database.php нужно ещё прописать, в блоке "connections".
https://laravel.ru/docs/v5/database#использование
1
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818
30.09.2016, 10:00  [ТС] 5
Цитата Сообщение от Para bellum Посмотреть сообщение
Значит в файле config/database.php нужно ещё прописать, в блоке "connections".
на самом деле проблема была в

PHP
1
$langs = DB::connection('mybase')
обратите внимание, что я передаю методу connection, а нужно передать 'mysql'!

но не совсем понятно, почему я должна делать вот такой запрос

PHP
1
$langs = DB::connection('mysql')->select('select * from test_lang');
я имею ввиду select * from ПОЛНОЕ ИМЯ ТАБЛИЦЫ, ведь я указала в конфигах префикс

PHP
1
prefix'    => 'test_',
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
30.09.2016, 10:14 6
Цитата Сообщение от Mashka_mulashka Посмотреть сообщение
обратите внимание, что я передаю методу connection, а нужно передать 'mysql'!
Про это и говорю. Если добавите новую базу -- нужно будет прописать рядом с mysql параметры нового соединения в файле config/database.php.
Цитата Сообщение от Mashka_mulashka Посмотреть сообщение
я имею ввиду select * from ПОЛНОЕ ИМЯ ТАБЛИЦЫ, ведь я указала в конфигах префикс
Это для динамически построенных запросов, вероятно.
1
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818
30.09.2016, 11:23  [ТС] 7
Цитата Сообщение от Para bellum Посмотреть сообщение
Это для динамически построенных запросов, вероятн
а подскажите где в ларавеле регистрировать свои функции и классы? например я хочу добавить функцию

PHP
1
2
3
4
function arrPrint($arr){
echo "<pre>";
print_r($arr);
echp "</pre>"
я прочитала, что для этого нужно создать свой сервис-провайдер

делаю

Bash
1
php artisan make:provider MyServiceProvider
после этого у меня в папке app/Providers появился MyServiceProvider.php.

так же в файле config/app.php добавила

PHP
1
2
3
'providers' => [
'Aoo\Providers\MyServiceProvider',
]
где мне теперь прописать эту функцию?
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
30.09.2016, 11:58 8
Цитата Сообщение от Mashka_mulashka Посмотреть сообщение
а подскажите где в ларавеле регистрировать свои функции и классы?
В папке "app" создайте папку Support и создайте файл helpers.php. В нём и храните свои функции-помощники.
Затем подключите этот файл так:
1) В файл composer.json, в блок "autoload", добавьте:
Javascript
1
2
3
"files": [
    "app/Support/helpers.php"
]
2) Выполните в консоли запрос:
Код
composer dumpautoload
или
Код
php composer.phar dumpautoload
смотря как используется Composer.

Всё, Ваш файл с функциями-помощниками подключён и функции доступны.
Да, и в Laravel уже есть функция dd, так что свою arrPrint можете не добавлять. Понимаю, что показали её для примера, но всё же...

Классы подключить не сложнее, но вариант подключения зависит от предназначения класса.
1
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818
30.09.2016, 12:36  [ТС] 9
Цитата Сообщение от Para bellum Посмотреть сообщение
В папке "app" создайте папку Support и создайте файл helpers.php. В нём и храните свои функции-помощники.
спасибо, а скажите, почему ловлю ошибку.

Я создала в папке app папку Helpers. В неё добавила

файл testInterface.php с содержимым

PHP
1
2
3
4
5
6
7
<?php
namespace App\Helpers;
 
Interface testInterface
{
    public function getTest();
}
и файл testController.php с содержимым

PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
namespace App\Helpers;
use App\Helpers\testInterface;
 
 
class testController implements testInterface
{
 
    public function getTest(){
        echo 123;
    }
}
затем в app/providers/testServiceProvider.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use App\Helpers\testController;
 
class testServiceProvider extends ServiceProvider {
 
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
 
    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->bind('App\Helpers\testInterface', function(){
            return new testController();
        });
    }
 
}
и в app/Http/Controllers/testController.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Helpers\testInterface;
class testController extends Controller {
 
    /*
    |--------------------------------------------------------------------------
    | Home Controller
    |--------------------------------------------------------------------------
    |
    | This controller renders your application's "dashboard" for users that
    | are authenticated. Of course, you are free to change or remove the
    | controller as you wish. It is just here to get your app started!
    |
    */
 
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        //$this->middleware('auth');
    }
 
    /**
     * Show the application dashboard to the user.
     *
     * @return Response
     */
    public function index() {
        return view('index');
    }
 
    public function perehod(testInterface $tests){
        $test = $tests->getTest();
        return view('perehod', array("tests" => $tests));
    }
 
}
перехожу по /perehod и получаю

PHP
1
2
BindingResolutionException in Container.php line 788:
Target [App\Helpers\testInterface] is not instantiable.
Добавлено через 2 минуты
в файле config/app.php

в массиве providers у меня есть

'App\Providers\testServiceProvider',

Добавлено через 5 минут
эм... помогла команда в консоли

Bash
1
php artisan config:clear
после каждого действия такое делать что ли?
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
30.09.2016, 12:44 10
Когда классы находятся в одном пространстве имён -- use использовать не нужно.
PHP
1
use App\Helpers\testInterface;
Цитата Сообщение от Mashka_mulashka Посмотреть сообщение
Target [App\Helpers\testInterface] is not instantiable.
А провайдер testServiceProvider зарегистрировали в списке провайдеров?

Немного нотации:
Классы лучше именовать том в стиле, в каком они именуются в Laravel. То есть, с заглавной буквы: TestController.
И ещё: окончание "Controller" лучше использовать только для HTTP-контроллеров, которые в папке app/Controllers лежат. А-то путаница будет.

Добавлено через 3 минуты
Цитата Сообщение от Mashka_mulashka Посмотреть сообщение
после каждого действия такое делать что ли?
Да нет. Обычно всё и так подключается. Но если что, можно выполнять:
Код
composer dumpautoload
0
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818
30.09.2016, 15:51  [ТС] 11
Цитата Сообщение от Para bellum Посмотреть сообщение
Да нет. Обычно всё и так подключается. Но если что, можно выполнять:
спасибо! А вы не знаете как после такого sql-запроса

PHP
1
2
3
4
5
6
        for($i = 0; $i < count($array_letters); $i++){
            $array_images[] = DB::table('symbol')
                ->where('symbol_name', '=', $array_letters[$i])
                ->select('symbol_id')->first();
 
        }
вернуть массив не вида

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Array
(
    [0] => stdClass Object
        (
            [symbol_id] => 21
        )
 
    [1] => stdClass Object
        (
            [symbol_id] => 28
        )
 
    [2] => stdClass Object
        (
            [symbol_id] => 3
        )
 
    [3] => stdClass Object
        (
            [symbol_id] => 28
        )
 
    [4] => stdClass Object
        (
            [symbol_id] => 21
        )
 
    [5] => stdClass Object
        (
            [symbol_id] => 3
        )
 
)
а вида

PHP
1
2
3
4
5
6
7
8
9
Array
(
    [0] =>  21
    [1] =>  28
    [2] =>  3
    [3] =>  28
    [4] =>  21
    [5] =>  3
)
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
30.09.2016, 16:37 12
А вот в цикле делать запросы нехорошо. Можно IN использовать. С учётом Вашего вопроса, сделать нужно так:
PHP
1
2
3
4
DB::table('symbol')
       ->whereIn('symbol_name', $array_letters)
       ->pluck('symbol_id')
       ->all();
Добавлено через 1 минуту
Эта конструкция как раз вернёт массив, какой Вам нужен.
0
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818
30.09.2016, 16:46  [ТС] 13
Цитата Сообщение от Para bellum Посмотреть сообщение
А вот в цикле делать запросы нехорошо. Можно IN использовать. С учётом Вашего вопроса, сделать нужно так:
получаю

PHP
1
Call to a member function all() on string
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
30.09.2016, 17:07 14
Что возвращает это?
PHP
1
2
3
dd(DB::table('symbol')
       ->whereIn('symbol_name', $array_letters)
       ->pluck('symbol_id'));
0
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818
30.09.2016, 17:09  [ТС] 15
Para bellum, "3"

ID последнего символа
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
30.09.2016, 19:09 16
А версия Laravel какая? В Laravel >=5.2 массив возвращает. Попробуйте заместо pluck использовать lists:
PHP
1
2
3
DB::table('symbol')
       ->whereIn('symbol_name', $array_letters)
       ->lists('symbol_id');
0
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818
01.10.2016, 15:34  [ТС] 17
Цитата Сообщение от Para bellum Посмотреть сообщение
А версия Laravel какая? В Laravel >=5.2 массив возвращает. Попробуйте заместо pluck использовать lists:
так нормально возвращает

PHP
1
Array ( [0] => 3 [1] => 21 [2] => 28 )
но если ввожу одинаковые символы, то как будто DISTINCT, т.е. ID Оного и того же символа возвращается только 1 раз, не зависимо от того, сколько раз этот символ был введен. если добавляю all(), то ошибка

PHP
1
Call to a member function all() on array
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
01.10.2016, 16:58 18
Цитата Сообщение от Mashka_mulashka Посмотреть сообщение
но если ввожу одинаковые символы, то как будто DISTINCT, т.е. ID Оного и того же символа возвращается только 1 раз, не зависимо от того, сколько раз этот символ был введен.
Всё правильно. Обычный запрос в базу выполните:
SQL
1
SELECT `symbol_id` FROM `symbol` WHERE `symbol_name` IN('а', 'б', 'б', 'в')
И получите то же самое.

Почему база должна возвращать ровно такое же количество, как и в перечислении?
0
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818
03.10.2016, 11:01  [ТС] 19
Para bellum, но мне то нужно все получить.

допустим если я передаю А Б Б В, то мне нужно получить

[0] => 1
[1] => 2
[2] => 2
[3] => 3
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
03.10.2016, 13:07 20
Цитата Сообщение от Mashka_mulashka Посмотреть сообщение
но мне то нужно все получить
В таком случае, сначала создайте обычный запрос, протестируйте его, а потом уже переносите на Query Builder.
0
03.10.2016, 13:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.10.2016, 13:07
Помогаю со студенческими работами здесь

SQL dialect is not configured
Всем привет! Intellij IDEA Ultimate 2017.3.3 Добавляю: @NamedNativeQuery( ...

Error your python may not be configured for tk
Создал маленькую программу с интерфейсом на Ткинтере, когда создаю exe файл, то оно мгновенно...

configured identity is incorrect
База была сначала в одном домене в связи с техническими неполадками домен перестал работать,...

The application is incorrectly configured
Пытаюсь разобраться с гугл плей сервисом сделал все как сказано здесь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru