These are chat archives for LaravelRUS/chat

14th
Dec 2014
Алексей Данчин
@Aleksey-Danchin
Dec 14 2014 09:26
Всем привет!
$user = User::find(Input::get('id'));
Как проверить
Всем привет!
$user = User::find(Input::get('id'));
Как проверить
$user = User::find(Input::get('id'));
if ($user) {...}
Так будет норм?
Brezhnev Ivan
@vanchelo
Dec 14 2014 09:32
смотря что тебе нужно
можно и так $user = User::findOrFail(Input::get('id'))
если записи нет в базе будет сгенерирован Exception
Алексей Данчин
@Aleksey-Danchin
Dec 14 2014 09:34
Ну про findOfFail знаю. Я про то, что if синтаксически приемлем? Может там есть типо $user->notFounded() или еще что...
Brezhnev Ivan
@vanchelo
Dec 14 2014 09:34
тебе просто проверить?
дальше использовать $user планируешь?
просто проверить можно через if ( ! User::whereId(Input::get('id'))->exists()) {...}
MaD
@maddog670
Dec 14 2014 09:40
This message was deleted
Brezhnev Ivan
@vanchelo
Dec 14 2014 09:41
и как эта конструкция проверит юзера по базе?
MaD
@maddog670
Dec 14 2014 09:44
эта никак
Алексей Данчин
@Aleksey-Danchin
Dec 14 2014 10:11
Да, буду использовать $user, но делать проверку с дополнительным запросом к базе данных я не буду пожалуй...
Роман Сохарев
@greabock
Dec 14 2014 10:12
Лулз
как бы вполне достаточно использовать findOrFail
хотя... если есть какой-то спец кейс для ненайденого...
То может и нужно if(){} использовать
Brezhnev Ivan
@vanchelo
Dec 14 2014 10:27
ага
если юзер не найден Lara запишет в переменную null
поэтому проверка if ( ! $user) {...} это очень даже нормально
Denis
@DenchikBY
Dec 14 2014 12:00
    public static function getByName($name)
    {
        return \Cache::remember('page.' . $name, 60 * 24 * 7, function () use ($name) {
            return self::where('name', '=', $name)->first();
        });
    }

не хочет кэшировать некоторые записи, например при $name footer_counters кэширует без проблем, а ads_index_before_tabs, ads_layout_left_bottom и тд отказывается...
с банами по ip такая же фигня

    public static function checkIpBan($ip)
    {
        $ip = ip2long($ip);
        return \Cache::remember('bans.' . $ip, 60 * 24 * 7, function () use ($ip) {
            return self::where('ip', '=', $ip)->first();
        });
    }

ip = 2130706433 и не сохраняет.
в чем проблема может быть?

Vlad Shcherbin
@VladShcherbin
Dec 14 2014 12:26

небольшой вопрос
предположим, у нас есть комментарии. они могут быть добавлены к статьям, фотографиям, видео и т.д.
как лучше всего сделать экшн добавления комментария, не у всех же контроллеров создавать addComment()?
если делать в BaseController, тогда надо брать url, откуда пришёл запрос и находить запись по slug (например фото), но он может быть в разном месте, например blog/{slug} или photos/nature/{slug}
что, добавить тогда в метод цифру сегмента вроде
addComment(3) и передавать в каждом контроллере?

идеи, советы? best practices?

Maxim
@Big-Shark
Dec 14 2014 12:31
а почему не сделать скрытое поле с ид и контролер комментс с методом адд?
Vlad Shcherbin
@VladShcherbin
Dec 14 2014 12:35
@Big-Shark ну, тогда как минимум два поля, тип и ид
и тогда в каждом шаблоне придётся их прописывать
Maxim
@Big-Shark
Dec 14 2014 12:38
@VladShcherbin Это проблема?
Можно сделать хелпер в который передаешь модель, и он ее ид подставляет и класс
Vlad Shcherbin
@VladShcherbin
Dec 14 2014 12:38
не проблема, конечно, интересно, как правильно делать
я тоже изначально так думал сделать, потом подумал про url и контроллер. вот решил посоветоваться, что выбрать
Maxim
@Big-Shark
Dec 14 2014 12:41
ну есть еще 2 вариант, это трейт, и в каждом контроллере делаем экшен который уже вызывает экшен из трейта, но передает туда нужные параметры
но я бы предпочел первый вариант за его простоту.
Vlad Shcherbin
@VladShcherbin
Dec 14 2014 12:43
да, думаю его и выберу. простой и понятный и в include передаётся легко
Maxim
@Big-Shark
Dec 14 2014 12:43
угу, тут просто не стоит забывать про принцип КИСС.
Vlad Shcherbin
@VladShcherbin
Dec 14 2014 12:45
@Big-Shark это точно, велосипеды всегда лезут в голову для DRY ;)
Rafkat Galiullin
@neolite
Dec 14 2014 13:30
всем привеьт
что там насчет пакета для автоматитческой инициализации пакетов в ларп
ларавел?
Orel
@2byte
Dec 14 2014 16:03
Нужно роуты сделать -i{id}-{id2} айди должны быть не обязательными, как быть с тере?
Brezhnev Ivan
@vanchelo
Dec 14 2014 16:08
-i{id}{dash?}{id2}
Orel
@2byte
Dec 14 2014 16:18
-i,- типа тоже патерн делать ? {s1?}{id?}{s2?}{id2?}
Brezhnev Ivan
@vanchelo
Dec 14 2014 16:19
да
Orel
@2byte
Dec 14 2014 16:19
Вот s1,s2 мне не нужны аргументами в методе контроллера
Brezhnev Ivan
@vanchelo
Dec 14 2014 16:20
тогда {id}
и регулярку пиши
в контроллере получишь один аргумент, разберешь его и получишь 2
Orel
@2byte
Dec 14 2014 16:25
Что то не понял про регулярку
Orel
@2byte
Dec 14 2014 16:31
Типа из строки запроса вырезать?
Brezhnev Ivan
@vanchelo
Dec 14 2014 16:35
нет
$route->get('{id}')->where('id', '(-\d+)(-\d+)?')
что-то типа такого
проверять надо
Orel
@2byte
Dec 14 2014 16:39
Можно и так, спс
vladflip
@vladflip
Dec 14 2014 16:42
ребята подскажите что делать, есть объект Comment который мне вернула Eloquent, у комента есть отношения с юзером, я сделал var_dump и все ок отношение присутствует
alt
но при обращении к свойству ->user я получаю не коллекцию а int 1, если всему коменту сделать ->toArray() то отношениe сохраняется, в чем проблема тут? почему коллекция исчезает?
ой, заметил только что что User почему то не коллекция а простой объект, с лайками все ок а с юзером нет...
туплю, все верно это же один объект, но все же почему я не могу получить доступ к его свойствам?
Brezhnev Ivan
@vanchelo
Dec 14 2014 16:49
а у тебя случайно нет поля user в таблице comments?
vladflip
@vladflip
Dec 14 2014 16:50
да я догадывался что оно берет оттуда столбец...
alt
Brezhnev Ivan
@vanchelo
Dec 14 2014 16:51
конечно
vladflip
@vladflip
Dec 14 2014 16:51
а как сделать тогда?
Brezhnev Ivan
@vanchelo
Dec 14 2014 16:51
сначала берет из атрибутов, если там не то из релейшена
менять user на user_id
иначе запутаешься
так же и с post полем
vladflip
@vladflip
Dec 14 2014 16:51
та уже запутался, выручил себя json_decode(->toJson()) и все как по маслу))
Brezhnev Ivan
@vanchelo
Dec 14 2014 16:52
ты делаешь не по стандартам
vladflip
@vladflip
Dec 14 2014 16:52
что именно? название столбцов?
Brezhnev Ivan
@vanchelo
Dec 14 2014 16:52
в ларе по дефолту связи через {model}_id
да
а у тебя получилось {model}
vladflip
@vladflip
Dec 14 2014 16:52
та я свои прописал
Brezhnev Ivan
@vanchelo
Dec 14 2014 16:53
и при получение связи $comment->user->name получишь ошибку
vladflip
@vladflip
Dec 14 2014 16:53
ну и оно запуталось так
Brezhnev Ivan
@vanchelo
Dec 14 2014 16:53
оно?
vladflip
@vladflip
Dec 14 2014 16:53
да да нон обджект
Brezhnev Ivan
@vanchelo
Dec 14 2014 16:53
читай что я выше писал
vladflip
@vladflip
Dec 14 2014 16:53
ну тоесть я запутал получается
да я понял
Brezhnev Ivan
@vanchelo
Dec 14 2014 16:53
столбцы переименуй
или имя связи переименуй
$comment->author
public function author() {}
vladflip
@vladflip
Dec 14 2014 16:54
я кроме как code brigth нигде не нашел про коллекции=( может подскажешь?
Brezhnev Ivan
@vanchelo
Dec 14 2014 16:54
но я бы всё же рекомендовал по правилам сделать user_id, post_id
vladflip
@vladflip
Dec 14 2014 16:54
да ок я так и сделаю сейчас
так подскажешь материал по коллекциям?
Brezhnev Ivan
@vanchelo
Dec 14 2014 16:56
что тебе не понятно?
LaravelButler

Приветствуем Вас, @molotsnk, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснений отношений между участниками. За нарушение – Бан!

Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, ознакомьтесь с Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

LaravelButler

Приветствуем Вас, @Insidexa, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснений отношений между участниками. За нарушение – Бан!

Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, ознакомьтесь с Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

vladflip
@vladflip
Dec 14 2014 17:34
@vanchelo ну например я хотел бы знать для чего каждое свойство в объекте eloquent, это уже не про коллекции
Brezhnev Ivan
@vanchelo
Dec 14 2014 17:34
такого нет объекта, есть Model
открываешь исходный код, там всё есть
vladflip
@vladflip
Dec 14 2014 18:02
@vanchelo окей
Brezhnev Ivan
@vanchelo
Dec 14 2014 18:05
я в основном по коду смотрю что-то новое, непонятное
vladflip
@vladflip
Dec 14 2014 18:26
@maddog670 тоже самое что и code bright, но спасибо
MaD
@maddog670
Dec 14 2014 18:29
@vladflip там еще пара статей есть
vladflip
@vladflip
Dec 14 2014 18:36
@greabock да, для меня актуальна создание пакета, позже прочитаю, спасибо