These are chat archives for LaravelRUS/chat

9th
Dec 2016
Sergey
@UnQuaiz
Dec 09 2016 02:27

@ekweb

Primary Keys

Eloquent will also assume that each table has a primary key column named id. You may define a  $primaryKey property to override this convention.

In addition, Eloquent assumes that the primary key is an incrementing integer value, which means that by default the primary key will be cast to an int automatically. If you wish to use a non-incrementing or a non-numeric primary key you must set the public $incrementing property on your model to false.

устанавливаешь свойство $incrementing у модели в false и не огребаешь кастинг. сталкивался с таким на одной бд

@WildWildTeams а зачем тебе метод в контроллере? такие методы должны в модель выноситься. Ты же работаешь не с конкретной реализацией, а с моделью. А если у тебя реализация метода контроллере опирается на реализацию метода в другом - это какой то неправильный подход. Есть ещё практика реализовывать Manager'ы - классы которые несут в себе вспомогательный функционал.
Vasiliy
@Golodnyi
Dec 09 2016 06:02
Посоны. 381 строчка в framework/src/Illuminate/Database/Connection.php, не кажется ли вам что это ошибка?
JhaoDa
@jhaoda
Dec 09 2016 06:09
@Golodnyi что именно?
Vasiliy
@Golodnyi
Dec 09 2016 06:09
я вот не пойму, на сколько динамичное содержимое переменной $statement
но я почти уверен, что оно не может стать $this
метод который вызывается в условии, в обоих вариантах (вроде как), вызовится из класса PDOStatement
разве нет?
Maksim Kiselev
@MKiselev
Dec 09 2016 06:19
@Golodnyi на 390 строке возвращается же она.
Vasiliy
@Golodnyi
Dec 09 2016 06:20
Нет, мне интересно в 381 строке что в переменной
только PDOStatement или там может находиться класс Connection
Хотя даже не суть
Maksim Kiselev
@MKiselev
Dec 09 2016 06:22
@Golodnyi на 369 там PDOStatement возвращается.
Vasiliy
@Golodnyi
Dec 09 2016 06:22
вооот
смотри 380-384 строки, они очень странные, они вызывают метод, в котором лишь 1 параметр на входе
и 2 бесполезны условия, которые ни на что не влияют
но в Connection есть аналогичная функция с 3 параметрами
еслиб 381 строка была $this->, логика была бы, но остальной контекст не подходит, т.к. Connection не от PDO наследуется и я воообще не понимаю, слишком много магии
тоесть 1 бесполезное условие, чет я уже замылился
Vasiliy
@Golodnyi
Dec 09 2016 06:30
похоже на то, как будто очепятка все таки
fakefakefake12
@fakefakefake12
Dec 09 2016 06:46
Всем привет. На серве store (оно же сохранение файлов) в storage/app/ не идет. 422 от серва, проблемы с правами?
KarmaBot
@KarmaBot
Dec 09 2016 06:46
@fakefakefake12, и тебе привет ;)
fakefakefake12
@fakefakefake12
Dec 09 2016 06:46
В логах пусто, что странно.
@fakefakefake12 те, кто читают доку ларавел, знают, что 422 это ошибка валидации
fakefakefake12
@fakefakefake12
Dec 09 2016 06:53
Подтверждаю. Но, на лок машине (вагрант) валидация проходит успешно, на удаленном сервере нет. Куда рыть?
JhaoDa
@jhaoda
Dec 09 2016 06:57
@fakefakefake12 смотреть ответ сервера. Сомнительно, что там один код 422 и больше ничего
fakefakefake12
@fakefakefake12
Dec 09 2016 06:59

Валидация стандартная до нельзя, загрузка файла

$this->validate($request, [
    'file' => 'required|file'
]);
$file      = $request->file('file');

Файл в контроллер идет аяксом в FormData (vue.http.post).

Ответ от сервера = сообщение валидации.
Загрузка поля file не удалась
JhaoDa
@jhaoda
Dec 09 2016 06:59
@fakefakefake12 вау! И что же в этом сообщении сказано?
@fakefakefake12 дважды вау! А что тебе мешало сразу это написать? Почему пришлось тянуть клещами?
fakefakefake12
@fakefakefake12
Dec 09 2016 07:00
Извиняюсь :/
Наблюдается только на удаленном сервере. Бунта 15.10, nginx, компиленый php7.1
Maksim (Ellrion) Platonov
@Ellrion
Dec 09 2016 07:06
@Golodnyi нет там никаких проблем читай http://php.net/manual/en/pdostatement.setfetchmode.php
Alexander
@bobrovskikh
Dec 09 2016 07:21
Всем привет! Подскажите, что почитать по поводу построения маршрутов категорий с вложенностью http://site.com/catalog/category/sub-category и товаров http://site.com/catalog/category/sub-category/product
KarmaBot
@KarmaBot
Dec 09 2016 07:21
Hello, @bobrovskikh!
Konstantin Mazurov
@streeboga
Dec 09 2016 07:22
@bobrovskikh чем доки плохи?)
Alexander
@bobrovskikh
Dec 09 2016 07:27
@streeboga там я такого примера не видел :)
Maksim (Ellrion) Platonov
@Ellrion
Dec 09 2016 07:28
@bobrovskikh если вложенность произвольная то надо думать, скорее всего так просто и не получится. А если вложенность ограничена т.е. например 1-3 уровня, то там всё просто и стандартных средств роутинга хватит.
fakefakefake12
@fakefakefake12
Dec 09 2016 07:29
Мда. Админ выставил upload_max_filesize = 2M из-за этого и сыпалась ошибка кхм... валидации.
Alexander
@bobrovskikh
Dec 09 2016 07:30
@Ellrion вложенность произвольная. Пример реализации я нашел, через доп таблицу url где храним path и модели относящиеся к нему. Но думал может кто подскажет, что еще почитать )
fakefakefake12
@fakefakefake12
Dec 09 2016 07:31
@jhaoda в любом случае, спасибо.
KarmaBot
@KarmaBot
Dec 09 2016 07:31
Спасибо (+1) для @jhaoda принято! Текущая карма +1353.
Maksim (Ellrion) Platonov
@Ellrion
Dec 09 2016 07:37
@bobrovskikh доп таблица дно.
app('router')->get('category/{categories_hierarchy}/product', function ($h) {
    return $h;
})->where('categories_hierarchy', '(.*)?');
Konstantin Mazurov
@streeboga
Dec 09 2016 07:38
catalog, category.... судя по всему эти разделы не так часто будут меняться и для сео хорошо было бы если б они остались такими навсегда... ты можешь запилить класс, который пробегал по моделям смотрел связи, строил бы по ним роутинг, а потом его закэшировал(forever) а когда срабатывает обновление пересоздал. чтобы не пересоздавать для всех, если там лярды записей будет, можешь разделять на части, это уже как удобнее будет... но я бы еще поковырял конфиг сервера, чтобы нагенерить статику и отдавать её напрямую обходя лару
Maksim (Ellrion) Platonov
@Ellrion
Dec 09 2016 07:38
@bobrovskikh и байнд замутить где будет categories_hierarchy биться по "/" а потом от последнего вытягиваться
@streeboga фу фу фу, только не роутинг вебсервером. Да и с чего ты взял что страница категории это статика?
Konstantin Mazurov
@streeboga
Dec 09 2016 07:45
@Ellrion какой-то промежуток времени, который меньше чем у страниц - статика) я имел ввиду что урлы постоянные должны быть.
лара же их всё равно кэширует в итоге, когда выкатываешь на прод?
Alexander
@bobrovskikh
Dec 09 2016 07:46
@Ellrion не совсем понимаю, как он будет понимать, тянуть ему категорию или товар. Как он отличит сабкатегоию от продукта? Либо я не пойму логику реализации тут..
@streeboga внутряк категорий будет меняться часто, либо я вопрос не понял.. Из за SEO это и делается свястопляска )
Konstantin Mazurov
@streeboga
Dec 09 2016 07:46
может и фуфуфу.. дело вкуса, который я еще, видимо, не распробывал))
Alexander
@bobrovskikh
Dec 09 2016 07:47
@Ellrion почему доп таблица = дно?
Maksim (Ellrion) Platonov
@Ellrion
Dec 09 2016 07:47
@bobrovskikh потому что придется за ней следить
Konstantin Mazurov
@streeboga
Dec 09 2016 07:49
@bobrovskikh ну так там у вас от апдейта до апдейта и если поисковик нормально проглотил структуру ту она такой останется надолго
Alexander
@bobrovskikh
Dec 09 2016 07:49
@Ellrion эм.. ну не руками же (:
@streeboga У гугла уже давно постоянный ап (:
Maksim (Ellrion) Platonov
@Ellrion
Dec 09 2016 07:52
@bobrovskikh 'category/{categories_hierarchy}' - роут категории; 'category/{categories_hierarchy}/product/{product}' или 'product/{categories_hierarchy}/{product}' - роут продукта. Но если охота избавиться вообще от "маркерных" частей урла то тогда конечно только где то хранить сгенерированные урлы
Alexander
@bobrovskikh
Dec 09 2016 07:56
@Ellrion чет идея хранить отдельно мне кажется более красивой.. может я не прав конечно. Пошел полиморфные связи курить
Alexander
@spartaque
Dec 09 2016 08:01
Привет. Не подскажете, это только у меня проблема, когда пишешь в правилах валидации reruired|json числа проходят валидацию, или это баг?
KarmaBot
@KarmaBot
Dec 09 2016 08:01
@spartaque, здравствуй.
Maksim (Ellrion) Platonov
@Ellrion
Dec 09 2016 08:02
@spartaque а число это валидный json
Alexander
@spartaque
Dec 09 2016 08:05
@Ellrion спасибо, не знал. А как тогда проверить что там именно ключ значение?
KarmaBot
@KarmaBot
Dec 09 2016 08:05
Спасибо (+1) для @Ellrion принято! Текущая карма +167.
Maksim (Ellrion) Platonov
@Ellrion
Dec 09 2016 08:07
@spartaque напиши свой валидатор json_object
Alexander
@spartaque
Dec 09 2016 08:08
@Ellrion как вариант. спс
KarmaBot
@KarmaBot
Dec 09 2016 08:08
Спасибо (+1) для @Ellrion принято! Текущая карма +168.
Maksim (Ellrion) Platonov
@Ellrion
Dec 09 2016 08:12
@spartaque
Validator::extend('json_object', function ($attribute, $value, $parameters, $validator) {
            return is_string($value) && starts_with($value, '{') && $this->validateJson($attribute, $value);
        });
rammtw
@rammtw
Dec 09 2016 08:30
ребят как перед $model->update($request->all()) , сделать форматирование какого-либо поля, например привести дату к нормальному виду Carbon::createFromFormat('d.m.Y H:i', $request->date) ? В Yii2 это делается так:
    public function init()
    {
        parent::init();
        $this->on(self::EVENT_BEFORE_UPDATE, [$this, 'setDate']);
    }
Maksim (Ellrion) Platonov
@Ellrion
Dec 09 2016 08:33
@rammtw ну если судить по yii коду то тебе нужен мутатор https://laravel.com/docs/5.3/eloquent-mutators#defining-a-mutator
Sergey
@UnQuaiz
Dec 09 2016 08:35
@rammtw в laravel такое делается ивентами или обсерверами
а можно и мутатором
только имхо при update - мутаторы не сработают
Alexander
@spartaque
Dec 09 2016 08:52
@Ellrion Еще раз спасибо;)
KarmaBot
@KarmaBot
Dec 09 2016 08:52
Спасибо (+1) для @Ellrion принято! Текущая карма +169.
Alexander
@spartaque
Dec 09 2016 09:01
@Ellrion кстати, ругается Call to undefined method [validateJson]
Maksim (Ellrion) Platonov
@Ellrion
Dec 09 2016 09:02
@spartaque поменяй там $this на $validator
KulakoffArtyom
@KulakoffArtyom
Dec 09 2016 09:02
Всем привет!
KarmaBot
@KarmaBot
Dec 09 2016 09:02
Hello, @KulakoffArtyom!
Sergey
@UnQuaiz
Dec 09 2016 09:03
@KulakoffArtyom привет коли не шутишь
Alexander
@spartaque
Dec 09 2016 09:03
@Ellrion менял, но чет не хочет Method [validateJson] does not exist.
validateJson то protected
KulakoffArtyom
@KulakoffArtyom
Dec 09 2016 09:04
Вопрос такой. Надо научить работать сессии ларавель в cookie less режиме. то есть я например передаю get-параметр session и ларавель должен автоматом сессию по идентификатору поднимать и работать с ней
как это вообще в ларе реализуется?
Sergey
@UnQuaiz
Dec 09 2016 09:05
загугли kevinsimard/laravel-cookieless-session @KulakoffArtyom
KulakoffArtyom
@KulakoffArtyom
Dec 09 2016 09:07
@UnQuaiz, спасибо
KarmaBot
@KarmaBot
Dec 09 2016 09:07
Спасибо (+1) для @UnQuaiz принято! Текущая карма +14.
KulakoffArtyom
@KulakoffArtyom
Dec 09 2016 09:07
то есть мне фронтендеру отдавать перегенерированный идентификатор, а он при последующем запросе просто скормит мне его в заголовки?
Sergey
@UnQuaiz
Dec 09 2016 09:08
@KulakoffArtyom ну либо заголовками, либо параметром _session-token
KulakoffArtyom
@KulakoffArtyom
Dec 09 2016 09:09
то есть для теста я могу спокойно постом отсылать _session-token = dasdhbqwqndaskfqljwnkl к примеру?
Sergey
@UnQuaiz
Dec 09 2016 09:09
@KulakoffArtyom ну ты в код загляни, там элементарно вроде всё
KulakoffArtyom
@KulakoffArtyom
Dec 09 2016 09:10
ок, еще раз спасибо
NetkovK
@NetkovK
Dec 09 2016 09:48
всем привет
KarmaBot
@KarmaBot
Dec 09 2016 09:48
Привет, @NetkovK! Проходи, присаживайся. В ногах правды нет :)
NetkovK
@NetkovK
Dec 09 2016 09:50
Делаю выборку из 2 таблиц, как задать псевдоним объеденной выборке и как ее можно дальше в запрос передать? Делаю вот так, но не работает:
$q1 = \DB::query()->from('work_time_searches')->union(\DB::query()->from('work_times'));
$q2 = \DB::query()->from($q1)->orderBy('from')->get();
Ivan
@Hunternnm
Dec 09 2016 09:58
@NetkovK а почему eloquent не юзаешь?
JhaoDa
@jhaoda
Dec 09 2016 09:59
@Hunternnm потому что не читал про него
Alexander
@spartaque
Dec 09 2016 10:14
@jhaoda :clap:
Alexander
@Dualse
Dec 09 2016 10:26
@Hunternnm Потому-что через eloquent такое нельзя сделать :sunglasses:
Alexander
@spartaque
Dec 09 2016 10:31
@NetkovK А почему у тебя слеш перед DB? Это же алиас фасада, никакого DB в глобальной области видимости нету. Или я ошибаюсь?
JhaoDa
@jhaoda
Dec 09 2016 10:31
@spartaque ошибаешься
Alexander
@spartaque
Dec 09 2016 10:36
@jhaoda да, работает и так. где-то есть почитать как работают алиасы?
JhaoDa
@jhaoda
Dec 09 2016 10:41
@spartaque Illuminate\Foundation\Bootstrap\RegisterFacades
Alexander
@spartaque
Dec 09 2016 10:43
@jhaoda ага, спасибо
KarmaBot
@KarmaBot
Dec 09 2016 10:43
Спасибо (+1) для @jhaoda принято! Текущая карма +1354.
Alexander
@spartaque
Dec 09 2016 11:18
@Ellrion а что с ним не так, кроме того, что я не знал что фасад резолвится с глоб. обл. видимости?
Maksim (Ellrion) Platonov
@Ellrion
Dec 09 2016 11:19
@spartaque удалил я свой коммент. не так понял ситуацию)
cgurubest
@cgurubest
Dec 09 2016 11:22
Привет всем
KarmaBot
@KarmaBot
Dec 09 2016 11:22
Hello, @cgurubest!
cgurubest
@cgurubest
Dec 09 2016 11:23
Подскажите кто знает почему у laravel logout это POST запрос
Alexander
@spartaque
Dec 09 2016 11:24
@Ellrion бывает :smile:
cgurubest
@cgurubest
Dec 09 2016 11:24
почему не GET
В чем секрет,
Maksim (Ellrion) Platonov
@Ellrion
Dec 09 2016 11:25
@cgurubest потому что это неидемпотентный запрос и ему нужна защита от csrf
JhaoDa
@jhaoda
Dec 09 2016 11:25
@cgurubest переделай на GET, никто не мешает
@Dualse REST тут ни при чем
Alexander
@Dualse
Dec 09 2016 11:25
@jhaoda Ок
nocaut
@dikiypac
Dec 09 2016 11:44
привет
KarmaBot
@KarmaBot
Dec 09 2016 11:44
@NOCaut, ну рассказывай. Как жизнь? :)
nocaut
@dikiypac
Dec 09 2016 11:44
можна по имени роута получить url?
Maksim (Ellrion) Platonov
@Ellrion
Dec 09 2016 11:45
@dikiypac тебе саму маску? если нет то твой вопрос странный ибо это основы route('name')
nocaut
@dikiypac
Dec 09 2016 11:46
url()->current() подошол
@Ellrion да можна через route('name')
Maksim (Ellrion) Platonov
@Ellrion
Dec 09 2016 11:48
@dikiypac может тебе стоит всё же прочитать доки?
JhaoDa
@jhaoda
Dec 09 2016 11:49
@Ellrion пора привыкнуть, что @dikiypac и @rorc не читают доки
Maksim (Ellrion) Platonov
@Ellrion
Dec 09 2016 11:49
@jhaoda я тут не так часто что бы привыкнуть)
JhaoDa
@jhaoda
Dec 09 2016 11:50
@Ellrion они их уже больше года не читают, так что пора :)
nocaut
@dikiypac
Dec 09 2016 11:50
@Ellrion )))
память плохая
доки? что ето
fakefakefake12
@fakefakefake12
Dec 09 2016 13:52
model::findOrFail(id) при запросе от аякса не вернет в json'е ошибку при NotFoundEx..?
fakefakefake12
@fakefakefake12
Dec 09 2016 14:11
Получается, чтобы в котроллерах не копипастить $a = a::find() -> if(!a) { json } нужно переопределить метод со своим ексепшеном? Или просто переопределить метод в модели?
JhaoDa
@jhaoda
Dec 09 2016 14:13
@fakefakefake12 а ты проверь, вернет или нет
Maksim (Ellrion) Platonov
@Ellrion
Dec 09 2016 14:13
@fakefakefake12 во первых ты можешь проверить. во вторых нужно смотреть в сторону обработчика ошибок (Exceptions\Handler)
@fakefakefake12 только когда будешь "проверять" не забудь при аякс запросе явно указать что тебе нужен в ответе json
Alexander
@spartaque
Dec 09 2016 14:16
@Ellrion У тебя работает тот код, что ты мне скинул, для валидации json_object?
Maksim (Ellrion) Platonov
@Ellrion
Dec 09 2016 14:17
@spartaque я не проверял. накидал прямо тут. ты всё ещё бьешься с методом validateJson? если его не удается вызвать так просто повтори его в своем методе
Alexander
@spartaque
Dec 09 2016 14:19
@Ellrion Да нет, задач много, пришло время коммититься, и увидел что нужно было json валидировать;)
Andrey
@Quiss
Dec 09 2016 14:21
Всем привет))
KarmaBot
@KarmaBot
Dec 09 2016 14:21
@Quiss, привет =)
Andrey
@Quiss
Dec 09 2016 14:21
ничоси в гиттере сменили диз
xD
с моего последнего раза
fakefakefake12
@fakefakefake12
Dec 09 2016 14:21
@Ellrion точно, а то проверял Advanced REST Client'ом, ох же хедеры не выставил, извиняюсь парни.
JhaoDa
@jhaoda
Dec 09 2016 14:23
На что только люди не идут, какими только извращениями не занимаются, лишь бы Postman не юзать...
fakefakefake12
@fakefakefake12
Dec 09 2016 14:23
А он на винду есть? =_=
Andrey
@Quiss
Dec 09 2016 14:23
@jhaoda ваще, постман этож вещь
@fakefakefake12 он под хром, наркоман)
JhaoDa
@jhaoda
Dec 09 2016 14:23
@fakefakefake12 для тебя — нет.
Andrey
@Quiss
Dec 09 2016 14:23
@fakefakefake12 https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop
fakefakefake12
@fakefakefake12
Dec 09 2016 14:23
Омг. Все, можно закапывать меня.
am0nshi
@am0nshi
Dec 09 2016 14:23
@jhaoda а потом спрашиваешь почему тебя злым считают xD
JhaoDa
@jhaoda
Dec 09 2016 14:24
@am0nshi я не спрашиваю, это вы спрашиваете
Andrey
@Quiss
Dec 09 2016 14:24
@am0nshi я его не считаю злым))
fakefakefake12
@fakefakefake12
Dec 09 2016 14:24
@jhaoda спасибо. Не, тут можно на меня ругнутся.
KarmaBot
@KarmaBot
Dec 09 2016 14:24
Спасибо (+1) для @jhaoda принято! Текущая карма +1355.
Alexander
@Dualse
Dec 09 2016 14:32
@Quiss Еще у нас оффтоп появился https://gitter.im/LaravelRUS/offtop )
Kirill Nesmeyanov
@SerafimArts
Dec 09 2016 14:33
А я считаю
Тёмыч - само зло! Затаскивает всех в дебри документации и там топит
JhaoDa
@jhaoda
Dec 09 2016 14:40
Выжившие мутируют и становятся Тёмычами
Andrey
@Quiss
Dec 09 2016 14:58
@Dualse ничоси, ништяки, надо в гиттер возвращаться )
4iloveg
@4iloveg
Dec 09 2016 17:26

Если есть две модели Post и File с отношением один к одному
То создавая новый пост с прикрепленным файлом

$post = new Post();
$post->name = 'Имя из формы';
$file = array('name' => 'file_name', 'path' => 'd://tepm/file.zip');
//
$post->file()->save($file);

Выполнив код - результатом будет две записи в таблицах посты и файлы, причем в таблице файлы в столбце post_id окажется id поста?

JhaoDa
@jhaoda
Dec 09 2016 17:38
@4iloveg так, как ты написал — нет. Зачем гадать, если в доке уже написано — https://laravel.com/docs/5.3/eloquent-relationships#the-save-method
4iloveg
@4iloveg
Dec 09 2016 17:49
На многих примерах сначала получают строку из основной таблицы (имея конкретный id) а после через метод - записывается id этой строки в предназначенное поле у зависимой.
С доками мне понятно. Но как узнать id еще не созданной записи?
На ум приходит только:
  • записать пост.
  • получить последний id из таблицы (только что записанный пост).
  • получив id записать строку о файле
    Но у меня ощущение что это не лучшее решение
cgurubest
@cgurubest
Dec 09 2016 20:18
Добрый вечер подскажите куда копать:
В вьюхе в функцие dd - {{dd($item->Category->name)}} Работает отлично, выводит результат в сроке.
если убираю dd говорит ошибка property of non-object
KarmaBot
@KarmaBot
Dec 09 2016 20:18
Прувет, @cgurubest!
Anton Leopolis
@WildWildTeams
Dec 09 2016 20:56
Есть хоть один нормальный пакет для работы с api вк?
Нужно что то простое
Чтобы в ручную забить имя метода, и параметры
Всем привет
KarmaBot
@KarmaBot
Dec 09 2016 20:56
@WildWildTeams, здравствуй.
Kirill Nesmeyanov
@SerafimArts
Dec 09 2016 20:59
@atehnix твой выход!
Anton Leopolis
@WildWildTeams
Dec 09 2016 20:59
Аж страшно стало
Kirill Nesmeyanov
@SerafimArts
Dec 09 2016 21:00
Андрей, сейчас самое время, ты должен выбежать с фразой "а вот и он" =(
Andrei Sosnov
@atehnix
Dec 09 2016 21:01
@WildWildTeams не боись, Кирилл просто намекает на пакет у меня в репе..)
А вот и он: atehnix/vk-client
Kirill Nesmeyanov
@SerafimArts
Dec 09 2016 21:01
@atehnix красава!
@atehnix баярлалаафыпворфпыолвй6цу7еа86це36ек23144445656
KarmaBot
@KarmaBot
Dec 09 2016 21:01
Спасибо (+1) для @atehnix принято! Текущая карма +173.
Kirill Nesmeyanov
@SerafimArts
Dec 09 2016 21:01
@KarmaBot о, так лучше, молодец
Anton Leopolis
@WildWildTeams
Dec 09 2016 21:10
@atehnix спасибо, в ридми не нашел, как подрубить к Laravel?
KarmaBot
@KarmaBot
Dec 09 2016 21:10
Спасибо (+1) для @atehnix принято! Текущая карма +174.
Kirill Nesmeyanov
@SerafimArts
Dec 09 2016 21:11
@WildWildTeams а как это должно выглядеть?
composer install норм? =)
Anton Leopolis
@WildWildTeams
Dec 09 2016 21:12
Ну я через композер установил
Имею ввиду прописать use ....
Andrei Sosnov
@atehnix
Dec 09 2016 21:12
@WildWildTeams use ATehnix\VkClient\Client;
Блин, похоже в ридми тоже надо писать.. Не всем это очевидно, значит)
Kirill Nesmeyanov
@SerafimArts
Dec 09 2016 21:16
@atehnix забей
Anton Leopolis
@WildWildTeams
Dec 09 2016 21:24
````
$response = $api->request('utils.resolveScreenName', ['screen_name' => $request->input('indetif')]);
            dd($response);
            $group_id = $response->object_id;
dd выдает такой результат
array:1 [ "response" => array:2 [ "type" => "group" "object_id" => 133937532 ] ]
Но получаю ошибку
Что делаю не правильно?
Trying to get property of non-object
Andrei Sosnov
@atehnix
Dec 09 2016 21:26
@WildWildTeams пытаешься обратиться к массиву как к объекту.
Anton Leopolis
@WildWildTeams
Dec 09 2016 21:28
json_encode
Не помогает
Andrei Sosnov
@atehnix
Dec 09 2016 21:29
@WildWildTeams
$id = $response['response']['object_id'];
Anton Leopolis
@WildWildTeams
Dec 09 2016 21:33
Спасибо
KarmaBot
@KarmaBot
Dec 09 2016 21:33
@WildWildTeams, в этом чате принято добавлять имя пользователя, чтобы его поблагодарить.
Anton Leopolis
@WildWildTeams
Dec 09 2016 21:35
@atehnix спасибо)
KarmaBot
@KarmaBot
Dec 09 2016 21:35
Спасибо (+1) для @atehnix принято! Текущая карма +175.
Anton Leopolis
@WildWildTeams
Dec 09 2016 21:45
Идеальный пакет)
Alex
@alexssdd
Dec 09 2016 21:50
Всем привет
KarmaBot
@KarmaBot
Dec 09 2016 21:50
@MrSSDD, здравствуй.
Alex
@alexssdd
Dec 09 2016 21:51
)
есть кто не спит ?
Kirill Nesmeyanov
@SerafimArts
Dec 09 2016 21:53
@MrSSDD бот не спит =)
Alex
@alexssdd
Dec 09 2016 21:53
ну это да )
он работяга
Anton Leopolis
@WildWildTeams
Dec 09 2016 21:54
@atehnix если использовать несуществующий параметр получаю ошибку
One of the parameters specified was missing or invalid: group_ids is undefined
Как её можно отловить?
Вдруг пользователь вставит ссылку на несуществующее сообщество
Kirill Nesmeyanov
@SerafimArts
Dec 09 2016 21:54
@WildWildTeams это ошибка API фконтакта
Anton Leopolis
@WildWildTeams
Dec 09 2016 21:54
Я понимаю
но смотри как я её получаю
Alex
@alexssdd
Dec 09 2016 21:55
помогите решить небольшую задачу
Kirill Nesmeyanov
@SerafimArts
Dec 09 2016 21:55
@MrSSDD iddqd?
Получаю не json с ошибкой
а получаю екзепшен
Kirill Nesmeyanov
@SerafimArts
Dec 09 2016 21:56
@WildWildTeams ну и?
ты не знаешь как исключения перехватывать?
Anton Leopolis
@WildWildTeams
Dec 09 2016 21:56
Еммм, да
Kirill Nesmeyanov
@SerafimArts
Dec 09 2016 21:56
@WildWildTeams я думаю тебе поможет совет номер 5: http://laravel.su/articles/nine-circles-of-chat
=)
Alex
@alexssdd
Dec 09 2016 21:57

задача переход пользователя на след шаг если в его ветки (branch_id) после него есть 4 пользователя
дамп

id      branch_id   user_id     step_id         sort    active
--------------------------------------------------------------
146        2            36            1                1        1
147        2            39            1                2        1
148        2            37            1                3        1
149        2            38            1                4        1
151        2            40            1                5        1

Сам код

$steps = $program->steps;
$firstStep = $steps[0];

foreach ($steps as $step) {

            // если это первый шаг
            if ($step->id == $firstStep->id) {

                $userSteps = $step->getUserSteps()->orderBy('sort')->all();
                $movedUserStep = null;

                foreach ($userSteps as $userStep) {
                    /** @var $userStep UserStep */

                    // берем один активный шаг
                    if ($userStep->active) {
                        $movedUserStep = $userStep;
                        break;
                    }
                }

                // если есть шаг для сдвига пользователя
                if ($movedUserStep) {

                    $countOfSubs = 0;

                    foreach ($userSteps as $userStep) {

                        $from = $movedUserStep->sort * $step->number + 1; // 0 * 4 + 1 =1, поз откуда считать
                        $to = $from + $step->number - 1; // 1 + 4 - 1 = 4 поз до куда считать

                        if ($userStep->sort >= $from && $userStep->sort <= $to && $userStep->branch_id == $movedUserStep->branch_id) {
                            $countOfSubs++;
                        }
                    }

                    // если после тебя есть 4 пол-ля
                    // 4 = 4
                    // то сдвигаем пол-ля
                    if ($countOfSubs >= $step->number) {
                        var_dump('не переходит сюда');
                        die;
                    }
                }
            }
        }
KarmaBot
@KarmaBot
Dec 09 2016 21:57
@MrSSDD, чтобы показать длинный листинг кода желательно использовать pastebin-сервис, например gist.github.com или laravel.io/bin.
Anton Leopolis
@WildWildTeams
Dec 09 2016 21:58
@SerafimArts ну try catch я знаю, думал может в ларе есть что то своё?
Kirill Nesmeyanov
@SerafimArts
Dec 09 2016 21:58
@SerafimArts да, конечно!
try catch
+)
Andrei Sosnov
@atehnix
Dec 09 2016 21:58
@WildWildTeams если очень хочется обойтись без exception, то можешь воспользоваться таким методом:
$api->setPassError(true);
Anton Leopolis
@WildWildTeams
Dec 09 2016 22:00
@atehnix api->toException так понимаю показывает причину ошибки, верно?
Kirill Nesmeyanov
@SerafimArts
Dec 09 2016 22:00
это статик метод
atehnix @atehnix поленился описать все возможности в доке.. :(
Kirill Nesmeyanov
@SerafimArts
Dec 09 2016 22:00
@atehnix кода достаточно, я даже при беглом взгляде всё понял =)
так что всё норм
Alexander
@Dualse
Dec 09 2016 22:02
@MrSSDD Ты показываешь, как решить задачу?
Alex
@alexssdd
Dec 09 2016 22:03

@Dualse вроде все правельно но не переходит

                    // если после тебя есть 4 пол-ля
                    // 4 = 4
                    // то сдвигаем пол-ля
                    if ($countOfSubs >= $step->number) {
                        var_dump('не переходит сюда');
                        die;
                    }

Как только не дебажил хз что ни так

Alexander
@Dualse
Dec 09 2016 22:03
@MrSSDD Извиняюсь, бегло пробежался и комментарий не заметил
Alex
@alexssdd
Dec 09 2016 22:04
@Dualse Да бывает
Andrei Sosnov
@atehnix
Dec 09 2016 22:05
@WildWildTeams Client::toException($error) - это для тех случаев, когда ты отключил бросание эксепшнов по дефолту, но потом в другом месте решил все-таки бросить эксепшн.. :)
Ну, примерно так как-то... ))
Anton Leopolis
@WildWildTeams
Dec 09 2016 22:06
@atehnix я просто сейчас пытаюсь понять как правильно сделать отлов екзепшенов на основе твоего класса)
отрубил вывод ошибок
сделал
if ($response['response']) {
Если ошибок нет то все круто
но если есть ошибка то Undefined index: response
По этому пытаюсь понять как правильно
Потому что то что делаю сейчас, это видимо костыли)
Kirill Nesmeyanov
@SerafimArts
Dec 09 2016 22:07
правильно не отключать ошибки
и нормально их обрабатывать
Anton Leopolis
@WildWildTeams
Dec 09 2016 22:08
@SerafimArts вот, как правильно обработать?)
Как из класса, получить ошибку
Kirill Nesmeyanov
@SerafimArts
Dec 09 2016 22:08
try catch карл!
Alex
@alexssdd
Dec 09 2016 22:09
Хелп (, хелп
Anton Leopolis
@WildWildTeams
Dec 09 2016 22:12
try {
            $response = $api->request('groups.getById', ['group_id' => $request->input('indetif')]);
        } catch (Exception $e) {
            echo $e->getMessage();
        }
Вот, так сделал
Но все равно ловлю ошибку во весь экран
Alex
@alexssdd
Dec 09 2016 22:14
@WildWildTeams Ты ведь сам ее распечатываешь
 catch (Exception $e) {
            echo $e->getMessage();
        }
Anton Leopolis
@WildWildTeams
Dec 09 2016 22:14
Ошибка в другом
catch (\Exception $e)
Вот так надо
Alex
@alexssdd
Dec 09 2016 22:16
@WildWildTeams ну это смотря ка кты его подключил или через use или от корня
;)
Kirill Nesmeyanov
@SerafimArts
Dec 09 2016 23:17
@samdark ты ещё симфонёвого не видел +))))
там почти каждый класс как сервис идёт
и если в ларке их штук 30 наберётся и то это тупо контракты, то в средненькой симфони 200+