These are chat archives for LaravelRUS/chat

5th
Apr 2017
Andrey
@daaner
Apr 05 2017 01:41
Привет! Подскажите как делать seeding в enum поля, никак не найду описание
KarmaBot
@KarmaBot
Apr 05 2017 01:41
Прувет, @Daaner!
Andrey
@daaner
Apr 05 2017 01:47
ой, вроде это не енум
Oleg Arkhipov
@Oleg-Arkhipov
Apr 05 2017 04:08

Ума не приложу, как всё-таки это отрефакторить можно?

$posts = Post::withRatingsFromIp($request->ip())->get();

foreach ($posts as $post) {
    $post->rated_up = false;
    $post->rated_down = false;
    if (!$post->ratings->isEmpty()) {
        if ($post->ratings->first()['type'] == Rating::UP) {
            $post->rated_up = true;
        } else {
            $post->rated_down = true;
        }
    }
}

Это минимальный пример. У меня есть посты, им можно ставить пальцы вверх и пальцы вниз, в отдельную таблицу (ratings) записываются отметки (с какого IP, когда, и вверх или вниз палец), можно голосовать раз в сутки. Для удобного написания вьюх хочется наличия у переданной туда модели полей rated_down и rated_up, которые говорят - стоит ли у текущего пользователя палец вверх и палец вниз. То есть не делать проверку if ($post->ratings->first()['type'] == Rating::UP) во вьюхе прямо.
При варианте выше этот кусочек кода в foreach нужно выполнять каждый раз при получении постов где-либо, чтобы заполнить эти поля, что очевидно сильно плохо. Но как сделать лучше?

Alexander
@spartaque
Apr 05 2017 06:39
@Oleg-Arkhipov можно через аксесоры это сделать
Oleg Arkhipov
@Oleg-Arkhipov
Apr 05 2017 06:49
@spartaque а, ну да, точно. Я до этого делал аксессоры, но ещё в $append = [...] добавлял поля эти, и выходил неприятный эффект, а можно же только аксессор сделать. Да, спасибо, так лучше, я что-то затупил. Правда выходит скрытый немного нюанс - нужно жадно подгружать данные (у меня в примере выше это в ::withRatingsFromIp($request->ip()) как раз делается уже), иначе от обращений к rated_up и rated_down полетит куча запросов. Но как-то сделать очевиднее и лучше не могу придумать
@spartaque спасибо не засчитал бот
KarmaBot
@KarmaBot
Apr 05 2017 06:49
Спасибо (+1) для @spartaque принято! Текущая карма +18.
Alexander
@spartaque
Apr 05 2017 06:51
@Oleg-Arkhipov куча запросов не будет, если будешь в аксесорах проверять на $this->relationLoaded('relation_here')
Oleg Arkhipov
@Oleg-Arkhipov
Apr 05 2017 06:56
@spartaque оо, спасибо двойное, вот это уже очень интересный совет, в первый раз вижу этот метод.
@spartaque я правильно понимаю, оттуда из аксессора тогда логично будет писать в лог, или, например, исключение кидать (если я хочу заставить всегда использовать жадную подгрузку)? Подгруззить оттуда ведь никак нельзя?
Alexander
@spartaque
Apr 05 2017 07:04
@Oleg-Arkhipov никогда не пробовал, но думаю можно. Почему нет? И в модели есть свойство $with. Оно для "The relations to eager load on every query."
Oleg Arkhipov
@Oleg-Arkhipov
Apr 05 2017 07:17
@spartaque нет - потому что в аксессоре ->with() и ->load() не работают, как иначе не знаю. Про $with я тоже не знал, спасибо, подумаю.
JhaoDa
@jhaoda
Apr 05 2017 07:18
@Oleg-Arkhipov так это, доку почитать надо, м? Это не знал, то не знал...
Oleg Arkhipov
@Oleg-Arkhipov
Apr 05 2017 07:20
@jhaoda покажи в доке про $with и $this->relationLoaded, пожалуйста. Я буду знать, где надо было смотреть, раз пропустил
JhaoDa
@jhaoda
Apr 05 2017 07:21
@Oleg-Arkhipov я не конкретно про эти методы и поля, я вообще. А после чтения доки надо ещё и в коде фрейма копаться
Oleg Arkhipov
@Oleg-Arkhipov
Apr 05 2017 07:22
@jhaoda ты явно мои же слова про " я тоже не знал" процитировал. Или зачем ты к доке сейчас меня отсылаешь тогда, если ответа именно на мой вопрос там нет?
JhaoDa
@jhaoda
Apr 05 2017 07:23
@Oleg-Arkhipov я ничего не цитировал. А отсылать к доке полезно в 99,99% случаев
Oleg Arkhipov
@Oleg-Arkhipov
Apr 05 2017 07:23
@jhaoda очень логично :(
JhaoDa
@jhaoda
Apr 05 2017 07:23
@Oleg-Arkhipov факт
Oleg Arkhipov
@Oleg-Arkhipov
Apr 05 2017 07:24
@jhaoda давайте тогда каждым вторым сообщением просто так посылать читать доку, в любом диалоге.
JhaoDa
@jhaoda
Apr 05 2017 07:24
@Oleg-Arkhipov да я бы рад, но меня просили не злоупотреблять :(
Oleg Arkhipov
@Oleg-Arkhipov
Apr 05 2017 07:25
@jhaoda ты как-то уже злоупотребляешь, по-моему. Или сообщение мне было случаем из 0,01%
JhaoDa
@jhaoda
Apr 05 2017 07:25
@Oleg-Arkhipov статистическая погрешность
Anton Vorontsov
@symbios-zi
Apr 05 2017 07:35
@Oleg-Arkhipov https://laravel.com/api/5.4/index.html вот тоже полезный ресурс
sergeypechenyuk
@sergeypechenyuk
Apr 05 2017 08:27
привет народ. вопрос не по теме. лару люблю, но вот поступила задача от начальства сделать сервер апи. Посмотрел лару, сколько она жрет памяти для вывода простого "Hello world", стало немного грустно. как-то можно минимизировать затраты по памяти или стоит смотреть в какую-то другую сторону или же писать с нуля собирая по нужным пакетам приложение?
KarmaBot
@KarmaBot
Apr 05 2017 08:27
@sergeypechenyuk, привет, как настроение?
Ivan
@Hunternnm
Apr 05 2017 08:28
@sergeypechenyuk а сколько она жрет?
@sergeypechenyuk именно апи, без вывода темплейта
sergeypechenyuk
@sergeypechenyuk
Apr 05 2017 08:28
@Hunternnm у меня получилось около 5 метров
Ivan
@Hunternnm
Apr 05 2017 08:28
@sergeypechenyuk именно response()->json?
sergeypechenyuk
@sergeypechenyuk
Apr 05 2017 08:28
если api, то немного ниже, но все равно много
@Hunternnm да именно так
Ivan
@Hunternnm
Apr 05 2017 08:29
@sergeypechenyuk смотри в торону go/rust/elixir/python тогда
sergeypechenyuk
@sergeypechenyuk
Apr 05 2017 08:29
@Hunternnm все не знакомые слова ))
буду тогда изучать
@Hunternnm спасибо
KarmaBot
@KarmaBot
Apr 05 2017 08:30
Спасибо (+1) для @Hunternnm принято! Текущая карма +343.
Ivan
@Hunternnm
Apr 05 2017 08:30
@sergeypechenyuk go + echo вполне сойдет
@sergeypechenyuk echo - это типа фреймворк на go
sergeypechenyuk
@sergeypechenyuk
Apr 05 2017 08:30
@Hunternnm а можно ссыль на гит?
Ivan
@Hunternnm
Apr 05 2017 08:31
sergeypechenyuk
@sergeypechenyuk
Apr 05 2017 08:31
@Hunternnm еще раз спасибо, ушел изучать
Владимир Сергеевич
@ipingvin_twitter
Apr 05 2017 08:33
5 мб это много?
sergeypechenyuk
@sergeypechenyuk
Apr 05 2017 08:34
@ipingvin_twitter начальство говорит да. я собрал из пакетов которые нужны, получается в 10 раз меньше. вот только нормально не могу подцепить oauth2, из-за этого все встало пока у меня
Владимир Сергеевич
@ipingvin_twitter
Apr 05 2017 08:34
а какая нагрузка планируется в 1сек?
sergeypechenyuk
@sergeypechenyuk
Apr 05 2017 08:34
порядка 100 запросов
Владимир Сергеевич
@ipingvin_twitter
Apr 05 2017 08:34
)))))
если у вас сервер не с 128мб памяти, то беспокоится не очем
Marat Amerov
@amerov
Apr 05 2017 08:35
@ipingvin_twitter если апи еще дергает несколько других апи и ждет по несколько секунд , при этом обрабатывает 100 запросов
sergeypechenyuk
@sergeypechenyuk
Apr 05 2017 08:35
проблема в том, что если простой веб жрет 5мб, то что говорить еще + о запросах в бд?
Marat Amerov
@amerov
Apr 05 2017 08:36
можно взять https://github.com/walkor/Workerman
правда в таком случае весь стек должен быть асинхронным
все IO
JhaoDa
@jhaoda
Apr 05 2017 08:38
@amerov @sergeypechenyuk https://gitter.im/LaravelRUS/offtop
Dmitry Konurov
@dkonurov
Apr 05 2017 09:30
Всем привет
я чет вообще упал с дуба не ругайте сильно 0_o laravel 5.0 знаю что кэшируются views, как убрать кэширование?
JesterAntik
@JesterAntik
Apr 05 2017 10:09

Изменил коллекцию пользователей в модели User. Теперь при выполнении простой операции Team::find(1)->fresh(['members']) получаю ошибку

[Symfony\Component\Debug\Exception\FatalThrowableError]
Type error: Argument 2 passed to Illuminate\Database\Eloquent\Relations\BelongsToMany::match() must be an instance of Illuminate\Database\Eloquent\Collection, instance of App\Collections\UserColl
ection given, called in E:\OpenServer\domains\v022.portal.local\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php on line 670

Это баг движка или я что-то сделал не так?
Artem Pugachev
@temasby
Apr 05 2017 10:09
Пассаны
Artem Pugachev
@temasby
Apr 05 2017 10:15
Такой вопрос. Правильно ли в провайдерах писать такую конструкцию:
        if(request()->headers->has('site')) {
            if(request()->headers->get('site') == env('PRIVATE_API')) {
                require base_path('routes/private_api.php');
            } else {
                require base_path('routes/public_api.php');
            }
        }
Или это говнокод
Devalgo
@almassar
Apr 05 2017 10:57
хотел уточнить при работе с cron. Вот эта команда будет его запускать каждую минуту ? php /path/to/artisan schedule:run >>/dev/null 2>&1
не часто ли ?
Igor Markin
@markinigor
Apr 05 2017 10:57
@almassar Жалко электричества?
Devalgo
@almassar
Apr 05 2017 10:58
@markinigor хотя нет на стороне сервера я же сам выбираю частоту запуска
Maksim (Ellrion) Platonov
@Ellrion
Apr 05 2017 11:28
@temasby категорически не правильно
PhpNet
@PhpNet
Apr 05 2017 11:32
Привет всем. Кто то выводил дерево категорий из nestedsets с полным путем? Может кто натолкнуть на мышль как оптимально это сделать? Использую kalnoy/nestedset. Есть таблицы и модели categories(id, ...) и meta(data_id, slug), в categories прописано отношение 1 к 1 с meta. Категории теоретически могут быть произвольной вложенности и в урлы в меню сайта нужно скормить slug по порядку в дереве, т.е., site.com/category/subcategory/sub-subcategory. Само дерево, понятное дело, вывел. Но как строить урл чет туплю, не могу сообразить.
Anton Vorontsov
@symbios-zi
Apr 05 2017 12:19
@temasby request помоему все таки зона ответсвенности контроллера. Я лично противник того чтобы куда то дальше его прокидывать
Mikail Aziev
@aziev
Apr 05 2017 12:20
@dkonurov зачем ты хочешь это сделать?
Artem Pugachev
@temasby
Apr 05 2017 12:23
@Ellrion а как правильно? :)
PhpNet
@PhpNet
Apr 05 2017 12:23

Фух. Разобрались. Если кому нужно будет подобную ерунду делать, спрашивайте :)

дерево категорий из nestedsets с полным путем

Владимир Сергеевич
@ipingvin_twitter
Apr 05 2017 12:25
@PhpNet ну так напиши, для истории )
Anton Vorontsov
@symbios-zi
Apr 05 2017 12:26
зачем?
Maksim (Ellrion) Platonov
@Ellrion
Apr 05 2017 12:26
@temasby ну если ты объяснишь свою схему то я мб и смогу что то посоветовать. Пока я даже не понимаю зачем оно так.
Dave
@aios
Apr 05 2017 12:26
@PhpNet оно надо?
Maksim (Ellrion) Platonov
@Ellrion
Apr 05 2017 12:26
@temasby но суть в том, что не круто юзать там реквест
PhpNet
@PhpNet
Apr 05 2017 12:27
@aios да мало ль у кого еще такие "сео-хотелки" будут :)
опенкарт на ларе реализовываем бл...
Anton Vorontsov
@symbios-zi
Apr 05 2017 12:27
@PhpNet молодцом. тут таких много и не удивил )
Artem Pugachev
@temasby
Apr 05 2017 12:30
@Ellrion это приватное и публичное апи, доменов тьма и в зависимости от домена - отдается разная информация
Maksim (Ellrion) Platonov
@Ellrion
Apr 05 2017 12:33
@temasby всё равно не понятно. у них роуты пересекаются? нельзя что ли приватное например и положить в группу с префиксом private а доступ мидлваром закрыть
@temasby доменный роутинг опять же. не подходит?
Artem Pugachev
@temasby
Apr 05 2017 12:33
@Ellrion апи висит на домене api.example.com, у кучи сайтов в nginx location /api/ { прокси к api.example.com с доп. хедером Site $host }
@Ellrion да, пересекаются роуты
Dmitry Konurov
@dkonurov
Apr 05 2017 12:37
@aziev да на время разработки отрубить, знаю можно в laravel 5.1 команду юзать artisan view:clear, а вот как делать в 5.0 и добавить пакет этот не могу поскольку юзается php 5.4 а требуется php 5.6
Maksim (Ellrion) Platonov
@Ellrion
Apr 05 2017 12:38
@temasby ну я бы всё равно где то в роутере что то сделал что бы можно было делать как доменный роутинг только по хедеру
Artem Pugachev
@temasby
Apr 05 2017 12:39
@Ellrion я бы с радостью, но с коробки только domain
Maksim (Ellrion) Platonov
@Ellrion
Apr 05 2017 12:40
@temasby ну так что нам стоит улучшить)
NelinD
@NelinD
Apr 05 2017 13:02
Народ, есть товарищи плотно работавшие с https://github.com/Intervention/image или https://github.com/spatie/laravel-medialibrary ?
Dave
@aios
Apr 05 2017 13:05
@NelinD Есть сложности?
Sharov Dmitriy
@ekweb
Apr 05 2017 13:20

Привет
Пытаюсь освоить elixir+vue, но что-то как-то на задалось все
Вылетает ошибка в браузере ReferenceError: require is not defined
gulp отрабатывает нормально, без ошибок

var elixir = require('laravel-elixir');
elixir(function(mix) {
    mix.sass('app.scss');
    mix.scripts([
        'app.js'
    ], 'public/js/app.js');
    mix.version(['css/app.css', 'js/app.js']);
});

сам скрипт app.js подключаю в конце страници

Спотыкается на require('./bootstrap');
Sharov Dmitriy
@ekweb
Apr 05 2017 13:22
@jhaoda ок, спасибо
KarmaBot
@KarmaBot
Apr 05 2017 13:22
Спасибо (+1) для @jhaoda принято! Текущая карма +1487.
Mikail Aziev
@aziev
Apr 05 2017 13:32
@dkonurov APP_ENV какой стоит у тебя?
@dkonurov поставить нормальную версию php по-хорошему надо
Dmitry Konurov
@dkonurov
Apr 05 2017 13:58
@aziev да как бы не спорю по поводу версии php, но такие условия с этим ничего пока сделать не могу :-(, APP_ENV local
Mikail Aziev
@aziev
Apr 05 2017 14:05
@dkonurov возможно на уровне php у тебя включено кэширование (отключается через php.ini)
Maksim (Ellrion) Platonov
@Ellrion
Apr 05 2017 14:06
@dkonurov ты имеешь ввиду кешируется скомпиленная вьюха?
Dmitry Konurov
@dkonurov
Apr 05 2017 14:06
@aziev спасибо да я как бы "кривое" решение пока что нашел, в дальнейшем уберу его
KarmaBot
@KarmaBot
Apr 05 2017 14:06
Спасибо (+1) для @aziev принято! Текущая карма +12.
Dmitry Konurov
@dkonurov
Apr 05 2017 14:06
@Ellrion ага
Maksim (Ellrion) Platonov
@Ellrion
Apr 05 2017 14:08
@dkonurov без влезания в движек никак. Нужно наследоваться от BladeCompiler и у него метод isExpired перекрыть на return true. ну и подсунуть его вместо базового
Dmitry Konurov
@dkonurov
Apr 05 2017 14:09
Вооо спасибо это более элегантное решение
@Ellrion спасибо, так правильнее будет
KarmaBot
@KarmaBot
Apr 05 2017 14:10
Спасибо (+1) для @Ellrion принято! Текущая карма +220.
Азер
@Energon_7_twitter
Apr 05 2017 16:28
Call to undefined method Illuminate\Database\Query\Builder::isAdmin() как можно исправить?
Maksim (Ellrion) Platonov
@Ellrion
Apr 05 2017 16:33
Gist
мб кому пригодится. Две команды одна для вывода списка пермишенов вторая для вывода крон задачь. в комментарии скрины с использованием
Nikolay Stepanov
@Maxlab
Apr 05 2017 16:43
@Ellrion спасибо, добавил в закладки
KarmaBot
@KarmaBot
Apr 05 2017 16:43
Спасибо (+1) для @Ellrion принято! Текущая карма +221.
JhaoDa
@jhaoda
Apr 05 2017 16:52
@Energon_7_twitter руками
Азер
@Energon_7_twitter
Apr 05 2017 16:53
@jhaoda так и сделал
Andrey
@daaner
Apr 05 2017 18:02
с сидами и enum разобрался. Можно объявлять как цифрой последовательности и енум, так и конкретно самим значением) Может кому понадобится
    public function run()
    {
        $gameservers = [
            [
                'name_ru' => 'Альсион',
                'type_server' => 'Server',
            ],
            [
                'name_ru' => 'Гардарика',
                'type_server' => '1',
            ],
            [
                'name_ru' => 'Церера',
                'type_server' => 'Server',
            ]
        ];

        foreach ($gameservers as $gameserver) {

            $newGameS = GameServer::create(array(
                   'name_ru'        => $gameserver['name_ru'],
                   'type_server'    => $gameserver['type_server'],
                ));
        }
    }
KarmaBot
@KarmaBot
Apr 05 2017 18:03
@Daaner, чтобы показать длинный листинг кода желательно использовать pastebin-сервис, например gist.github.com или laravel.io/bin.
Andrey
@daaner
Apr 05 2017 18:04
$table->enum('type_server', array('Server', 'Platform'));
прости меня жестянка(
Andrei Sosnov
@atehnix
Apr 05 2017 18:08
@Daaner а GameServer::create($gameserver) не? ;)
Andrey
@daaner
Apr 05 2017 18:10
ну копировал, в других ДБ еще идет проверка на уникальность, поэтому приходится вносить в переменную, а тут не прибил
типа
foreach ($users as $user) {
            $newUser = User::where('username', '=', $user['username'])->first();
        if ($newUser === null) {
                $newUser = User::create(array( // лалала ...
Andrei Sosnov
@atehnix
Apr 05 2017 18:14
@Daaner User::firstOrCreate($user)
Nikolay Stepanov
@Maxlab
Apr 05 2017 18:18
))
@atehnix ты его победил)
Andrei Sosnov
@atehnix
Apr 05 2017 18:19
@Maxlab жду, что он скажет, что иногда надо еще обновлять, если существует.. )
Nikolay Stepanov
@Maxlab
Apr 05 2017 18:25
@atehnix :smile:
Nickolas Che
@nickoche_twitter
Apr 05 2017 20:38

Всем привет! Ай нид хелп!
Есть две таблицы tables и fields, в модели Table прописываем метод:

 public function fields()
    {
        return $this->hasMany(Field::class);
    }

При обращении к методу $fields = Table::find(1)->fields; возникает ошибка:

ErrorException in Tables.php line 102:
Trying to get property of non-object

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

KarmaBot
@KarmaBot
Apr 05 2017 20:38
@nickoche_twitter и тебе не хворать :)
Alexandr Chernyaev
@tabuna
Apr 05 2017 20:42
@nickoche_twitter Table::find(1)->fields()->first() ?
Nickolas Che
@nickoche_twitter
Apr 05 2017 22:01
@tabuna Спасибо. Таки глаз замылился - записи в tables с id = 1 не было )))
KarmaBot
@KarmaBot
Apr 05 2017 22:01
Спасибо (+1) для @tabuna принято! Текущая карма +4.
Виталя
@ferraghue
Apr 05 2017 22:07
привет. Есть живые? Как вы организовываете структуру блейд файлов, шаблонов.
У меня есть лейаут, но с этим и кучу разных мини-шаблонов, для вывода в сайдбар последних комментов, видео, изображений, доп контента и так далее. Некоторые шаблоны собираю через ViewComposer. Но от как структурировать каталоги чтобы не запутаться потом и не дублировать html
KarmaBot
@KarmaBot
Apr 05 2017 22:07
@mrfanta и тебе не хворать :)