Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Laravel 5.x » Laravel passport регистрация и авторизация пользователей » 28.03.2018 15:41:57

respectpick
Ответов: 1

Должен ли как-то отличаться механизм регистрации пользователей по-умолчанию от регистрации через паспорт?

Приложение работает через API и требуется проверять авторизацию пользователей, но через middleware api сессия, которая стартанула через обычную авторизацию пользователя, не проверяется. Вопрос- что нужно сделать при регистрации и авторизации пользователя, что бы видеть видеть сессию пользователя ?

#2 Laravel 5.x » Как подключить Vue компоненты из папки Public? » 22.03.2018 18:22:50

respectpick
Ответов: 1

Есть необходимость в админку (sleepingowl) добавить свой Vue-компонент.

До этого все компоненты располагались /resources/assets/js/components.

Подключаю в админке свой блейд, который находится в папке resources/views/admin/

<div id="appCropper">
    <cropper-admin></cropper-admin>
</div>

Дальше, уже в папке public делаю

let Child = {
    template: '<div>test</div>'
};



new Vue({
    el: '#appCropper',
    components: {
        'cropper-admin' : Child
    }
});

Но проблема в том, что, когда я делаю require('путь_до_компонента_в_папке_resouces') у меня консоль выдает ошибки. Тоже самое, когда пытаюсь сделать

import VueSweetalert2 from 'vue-sweetalert2';

Vue.use(VueSweetalert2);

#3 Re: Laravel 5.x » Laravel перестал работать после миграций » 14.12.2017 10:45:12

Приложение начало очень странно работать. Если я удаляю эту таблицу, то все приложение перестает работать. Не открывается ни одна страница, падает даже композер. Если создаю вручную эту таблицу, то не могу применить миграцию, т.к. таблица уже создана. Если откатываю миграции и эта таблица удаляется, приложение опять падает. Какая-то тупиковая ситуация получается. Не понимаю, почему именно ЭТА таблица, почему не любая другая.

На стэковерфлоу тема - https://stackoverflow.com/questions/477 … 5_47795606

Все, что подсказали, не работает.

#4 Re: Laravel 5.x » Laravel перестал работать после миграций » 13.12.2017 15:51:00

дело в том, что не работает теперь ни одна команда вообще. Я даже миграцию не могу запустить заного

#5 Laravel 5.x » Laravel перестал работать после миграций » 12.12.2017 18:40:11

respectpick
Ответов: 7

Запустил миграции и после этого приложение перестало работать.

Сначала, я подумал, что дело в ошибке в миграции, но не мог запустить вообще ни одну команду. даже php artisan или composer-dump autoload отказывались работать. Ошибка следующая 

Base table or view not found: 1146 Table 'delivery_update.services' doesn't exist in /home/delivery/dev2/vendor/laravel/framework/src/Illuminate/Database/Connection.php

Затем я попробовал просто открыть сайт, но вылетела ошибка 500.

Зашел в файл Connection.php и выключил вывод ошибок.

Fatal error: Uncaught PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'delivery_update.a_delivery_service' doesn't exist in /home/delivery/dev2/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 668...

полный скрин ошибки - http://joxi.ru/a2X45M1S1eW4E2

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

Кто-нибудь сталкивался с подобным?

#6 Laravel 5.x » Объясните, что делает этот сервис провайдер » 29.11.2017 16:38:34

respectpick
Ответов: 1

Перевожу проект с Laravel 5.0 на Laravel 5.5. Проект не мой. В нем есть сервис провайдер, который называется BusServiceProvider (точно с таким же названием, сервис провайдер, есть и в Illuminate\Bus\BusServiceProvider). В нём реализован только метод boot.Код в нем следующий

    public function boot(Dispatcher $dispatcher)
    {
        $dispatcher->mapUsing(function($command)
        {
            return Dispatcher::simpleMapping(
                $command, 'App\Jobs', 'App\Handlers\Commands'
            );
        });
    }

Не могу понять, что делает этот сервис провайдер и при попытке просто задублировать код в новом проекте (где версия 5.5) методы mapUsing и simpleMapping не найдены.

#8 Laravel 5.x » Расскажите порядок действий для выполнения этой задачи » 01.09.2017 10:59:22

respectpick
Ответов: 1

Сам текст задачи вот такой

Будем считать, что директория . корень проекта Laravel 5.4

Для Laravel 5.4 написать сервис, отдельным модулем,
который возможно проинсталлировать через composer из локальной директории в vendor из дериктории ../vendor/objects

При публикации сервиса через artisan vendor: publish в дериктории конфигураций laravel должен создаться конфиг objects.php

Сервис должен быть доступен через алиас "Objects" фасада сервиса
Сервис имеет метод make - возвращающий объекты типа класса из конфига objects.php

В конфиг objects.php будут вноситься различные значения '{Наименование}'' => [class => '{Класс}', age => {Возраст}], например 'Dog' => ['class' => \Examples\Dogs::class, 'age' => 7 ], 'Cat' => ['class' => \Examples\Cats::class, 'age' => 3 ], 
где все классы обязаны иметь методы age() возвращающие соответствующее значение из age - конфига в соответствии с классом, и class() возвращающие строку с наименованием класса объекта в котором вызван

Сервис не может создать объект, у класса которого отсутствуют обязательные методы.
Если запросить не существующий в конфиге класс, должно быть брошено исключение класса \Examples\ObjectsMakeException::class

Тесты в php artisan tinker:

$dog = Objects::make('Dog'); \\$dog объект класса \Examples\Dogs
$dog->age(); \\Должен вернуть 7
Objects::make('Cat')->age(); \\Должен вернуть 3
Objects::make('Cat')->class(); \\Должен вернуть (String) '\Examples\Cats'

Objects::make('Human'); // ObjectsMakeException

Насколько я понимаю, нужно действовать вот так:

1. Создать в корне папку packages, в которой будет весь код пакета
2. Создать там сервис провайдер, который будет регистрировать весь пакет
3. Создать абстрактный класс Object, который будет содержать абстрактные методы age и class
4. Наследовать все классы, которые заданы в конфиге от этого Object...
...
Как то дальше не соображу

#10 Laravel 5.x » Не могу переключиться на другое соединение с БД » 07.06.2017 11:07:43

respectpick
Ответов: 3

прописал в .env

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=sfc
DB_USERNAME=root
DB_PASSWORD=123456


DB_VITYA_DATABASE=sfc_vitya
DB_VITYA_USERNAME=root
DB_VITYA_PASSWORD=123456

и в config/database.php

  'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'sfc'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', '123456'),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => 'sfc_',
            'strict' => true,
            'engine' => null,
        ],

        'mysql_vitya' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_VITYA_DATABASE', 'sfc_vitya'),
            'username' => env('DB_VITYA_USERNAME', 'root'),
            'password' => env('DB_VITYA_PASSWORD', '123456'),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => 'sfc_',
            'strict' => true,
            'engine' => null,
        ],

ставлю в default

'default' => env('DB_CONNECTION', 'mysql_vitya')

в итоге используется соединение с БД старое

#11 Re: Laravel 5.x » Почему unit тест не делает апдейт записи в бд? » 17.05.2017 11:56:46

constb пишет:

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

как ни странно все заработало. само.

#13 Laravel 5.x » Почему unit тест не делает апдейт записи в бд? » 17.05.2017 11:36:29

respectpick
Ответов: 3

Есть метод, который делает апдейт записи в бд. Если запрос посылается через юзер - интерфейс то все ок и апдейт срабатывает.

Вот код апдейта

 $game_periods_table = DB::table('game_periods')->where('id', $id);
          $current_update_array = [];

          if(array_key_exists('A', $count_throws)){
              $current_update_array['count_throws_a'] =  $count_throws['A'];
          }

          if(array_key_exists('B', $count_throws)){
              $current_update_array['count_throws_b'] =  $count_throws['B'];
          }

          $current_update_array['updated_at'] = date('Y-m-d H:i:s');

          $game_periods_table->update($current_update_array);

А вот так выглядит юнит тест этого метода

protected $bgame;
protected $game_id = 95;

public function setUp(){
    parent::setUp();

    $game = new Game();
    $game = $game::find($this->game_id);

    if(is_null($game)){
        $this->fail('Game is not found!');
    }

    $this->bgame = new BGame($game);
}

public function testUpdateThrows(){
    $test_array = [
        'first_period_throws' => ['A' => 1, 'B' => 2],
        'second_period_throws' => ['A' => 3, 'B' => 4],
        'third_period_throws' => ['A' => 5, 'B' => 6],
        'ot_period_throws' => ['A' => 7, 'B' => 8],
    ];

    $this->assertTrue($this->bgame->updateThrows($test_array));
}

Тест успешно проходится, однако запись в БД не обновляется. Если делаю дамп апдейта

dd($game_periods_table->update($current_update_array));

то возвращается "1", т.е. одна строка была зтронута.

Для юнит тестов использую тестовую базу, которая идентична основной.

#14 Laravel 5.x » Как написать такой sql запрос через конструктор запросов Laravel » 04.05.2017 15:41:16

respectpick
Ответов: 2

версия 5.4

есть такой sql - запрос

SELECT pm.Id, p.first_name, p.second_name, p.last_name
FROM 
  sfc_bids_players_matches AS pm
  JOIN  sfc_bids_players_champs AS pc ON pm.bid_player_champ_id = pc.Id
  JOIN  sfc_players AS p ON p.Id = pc.player_id
WHERE
  pm.bid_team_match_id IN (
    SELECT team_a_btm_id FROM sfc_games WHERE id = 95
    UNION
    SELECT team_b_btm_id FROM sfc_games WHERE id = 95
  )

как можно с помощью конструктора запросов составить это же выражение?

#15 Laravel 5.x » Sleeping Owl вложенное меню кто делал? » 06.04.2017 18:50:10

respectpick
Ответов: 0

Laravel 5.4. Sleeping Owl 4

Не могу понять, как сделать вложенное меню. У меня есть секции в которых

    public function initialize()
    {
        $this->addToNavigation($priority = 600, function() {

        });
    }

а как вложить в общий список два пункта секции?

#16 Laravel 5.x » Свойство модели возвращает null хотя модель есть » 05.04.2017 18:14:07

respectpick
Ответов: 0

есть две модели (победители и команды), связь один к одному.

Победители

    public function team(){
        return $this->hasOne('App\Models\Team', 'id');
    }

Команды

    public function winner(){
        return $this->belongsTo('App\Models\Winner', 'team_id');
    }

делаю запрос

$winners = Winner::where('championship_id', 2)->get();

получаю коллекцию из двух нужных мне элементов.

Затем идут циклом по коллекции

        foreach($winners as $winner){
            dump($winner->team);
        }

и для первой коллекции возвращается null, для второй все нормально

но если делаю

        foreach($winners as $winner){
            dump($winner);
        }

то нужный элемент выводится и не пустой

#17 Laravel 5.x » Sleeping Owl выбрасывает Exception » 04.04.2017 13:25:18

respectpick
Ответов: 0

SO последняя версия, ларавел тоже

Создаю модель, делаю ей

AdminColumn::lists('type.name', 'Тип чемпионата')

В моделях стоят отношения

class Championship extends Model
{

    public function type(){
        return $this->belongsTo('App\Models\Enum\EnumChampionshipType', 'id');
    }
class EnumChampionshipType extends Model
{
    public function championship(){
        return $this->hasMany('App\Models\Championship', 'type_enum_id');
    }
}

при загрузке страницы ловлю ошибку

FatalErrorException in 74d7252e8b7d20fd1a1f60d84c0c0621d05358d4.php line 0:
Method Illuminate\View\View::__toString() must not throw an exception

С чем может быть связано это?

#19 Re: Laravel 5.x » Почему не выполнилась миграция » 22.03.2017 18:39:49

Dens пишет:

хмммм, тут только руками щупать, сказать не могу.
Так запрос по типу

SELECT championship_name FROM `championships` WHERE 1

не прошёл?

странно, закомментировал строчку

//$table->string('championship_name',255);

и все выполнилось.

Теперь новая проблема, создал новую миграцию, делаю php artisan migrate, Ловлю ошибку

Class 'Doctrine\DBAL\Driver\PDOMysql\Driver' not found

#20 Re: Laravel 5.x » Почему не выполнилась миграция » 22.03.2017 18:30:35

Dens пишет:

А где вы его указывали?

config/database.php

'prefix' => 'sfc_'

#21 Re: Laravel 5.x » Почему не выполнилась миграция » 22.03.2017 18:29:29

сейчас создал миграцию

    public function up()
    {
        Schema::table('sfc_championships', function (Blueprint $table) {
            $table->string('championship_name',255);
            $table->string('championship_url_code',255);
            $table->integer('championship_type_id');
            $table->integer('championship_season_id');
            $table->integer('championship_start_playoff_id');
            $table->integer('championship_3place');
            $table->integer('championship_current_id');
            $table->integer('championship_stat_id');
            $table->integer('championship_mingk');
            $table->integer('championship_maxplayers');
        });
    }

вызываю migrate, получаю ошибку Table sfc_sfc_championships doesn`t exist

#22 Re: Laravel 5.x » Почему не выполнилась миграция » 22.03.2017 18:22:19

Dens пишет:

Так у вас имя таблицы --table=championships
то есть championships а не sfc_championships

а то, что я указал префикс в конфигурации бд не имеет значения?

#23 Re: Laravel 5.x » Почему не выполнилась миграция » 22.03.2017 18:06:53

в таблице запись есть.

после sql запроса

Error
SQL query: Documentation


SELECT championship_name FROM `sfc_championships` WHERE 1
 LIMIT 0, 25 
MySQL said: Documentation

#1054 - Unknown column 'championship_name' in 'field list' 

#24 Re: Laravel 5.x » Почему не выполнилась миграция » 22.03.2017 17:17:35

Dens пишет:

у вас случаем не OpenServer и phpMyAdmin стоит?
если так то в некоторых версиях есть косячок в phpMyAdmin, там в левом фрейме новые таблицы не появляются, нажмите на саму базу и посмотрите в основном окне

нет, CentOS и phpmyadmin.

Причем нормально срабатывает миграция на создание таблицы

#25 Laravel 5.x » Почему не выполнилась миграция » 22.03.2017 16:53:09

respectpick
Ответов: 12

сначала прописал в консоли

php artisan make:migration new_tables_championships --table=championships

создалась миграция, туда добавил

    public function up()
    {
        Schema::table('championships', function (Blueprint $table) {
            $table->string('championship_name',255);
            $table->string('championship_url_code',255);
            $table->integer('championship_type_id');
            $table->integer('championship_season_id');
            $table->integer('championship_start_playoff_id');
            $table->integer('championship_3place');
            $table->integer('championship_current_id');
            $table->integer('championship_stat_id');
            $table->integer('championship_mingk');
            $table->integer('championship_maxplayers');
        });
    }

затем прописал в консоли

php artisan migrate
Migrating: 2017_03_22_133851_new_tables_championships
Migrated: 2017_03_22_133851_new_tables_championships

но в бд ничего не поменялось

Подвал раздела