• Как правильно делать пагинацию комментариев при древовидной системе?

    @Kostik_1993
    Web Developer
    Вашу проблему решит любой пакет для работы с nestedset например этот https://github.com/lazychaser/laravel-nestedset

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

    Дальше вы сможете выбрать постранично всех родителей и к ним загрузить внутренние комментарии
    Comments::whereIsRoot()->pagination(5)->get();

    В документации целая куча методов, которые позволят реализовать любые желания. Смотрите пробуйте
    Ответ написан
    2 комментария
  • Как в Laravel заполнить чекбоксы относительно get-параметров в адресной строке?

    @Kostik_1993
    Web Developer
    Например так
    @if(request()->input('name') == 'value') checked="" @endif

    А еще лучше использовать расширение для форм, тогда он сам выставит нужное значение если оно придет с запросом

    https://laravelcollective.com/docs/5.4/html#checkb...

    Form::checkbox('name', 'value', true);
    Ответ написан
    1 комментарий
  • Почему чувствую себя бесполезным и ни на что не способным на первой работе по специальности?

    @abbaboka
    В течении дня могли переключить на другое задание, не связанное с программированием (скорее с тех.поддержкой ), а потом говорить почему я то не сделал.

    1) Косяк в организации работ на фирме.
    2) С вами не должны нянчиться, про все детали как вы работаете не должны помнить. Если у вас проблема - общайтесь с руководителем непосредственным.

    Задания, которые мне давали, описывались двумя словами ( старший разраб почему то думал, что я понимаю все сокращения и используемые технологии, которые ужились в команде разработчиков ).

    И кто за вас будет задавать вопросы?
    Выяснение задачи до конца, прежде чем начать работу - один из основных навыков программиста.

    Каждое задание мне приходилось переспрашивать по 5 раз, а если вскрывался подводный камень, о котором мне не говорили, то ещё по 5 раз.

    Абсолютно нормально для начинающего.
    Более того - абсолютно нормально даже для сеньора, который только входит в новый для себя проект.

    Да и вообще - подводные камни - это "наше все" в программировании.

    Знаний для позиции Junior C# с головой

    Нет. Вы не джун еще. Вы всего лишь "трейни".

    но я элементарно не справлялся с задачами, которые мне давали, потому что я просто не знал что и как устроено, работает, откуда обращается и где вызывается, от чего зависит и тп.

    Один из типовых навыков программиста - это все выяснять.
    Постоянно, каждодневно.
    Это нормально.

    Получается, что каждое задание - это постоянные вопросы, непонимание, моральное давление


    А вы часом не перехвалили себя в резюме?

    От вас поди ожидали большей квалификации.

    За всё время я лишь подтянул знания о git'е и не более.


    Вас никто не будет учить, кроме вас самого.

    можно ли назвать позицию "Разработчик C#/.NET", если за месяц стажировки я написал максимум 10 строчек ?

    Вполне.
    Дело трейни - разбираться, вникать. Тем более первый месяц.
    И вообще производительность труда программиста отнюдь не в количестве строк меряется. Я с месяц назад за исправление значения 2 констант взял 6 000 рублей за свою работу.

    После своего первого опыта чувствую себя ни на что неспособным в программировании. Со стажировки ушёл.


    Вход в профессию программиста тяжел.
    Вход и вникание на новом месте работы тоже не прост. Даже если вы уже сложившийся программист.

    Большинство программистов, кстати, предпочитают не вникать.
    А писать свои велосипеды.
    В частности потому так очень популярен фриланс "в одного".

    Не нашел ничего такого эдакого в вашем описание.
    Все норм. Примерно так и должно быть

    Из реальных косяков фирмы:
    Другое дело, что в нормальных фирмах к стажеру прикрепляют наставника на месяц другой.

    Все остальное:
    Исключительно ваши косяки.


    Вы напрасно слиняли.
    Как показывает моя практика - 2 недели нужно только для первичного вникания.
    То есть когда ты еще ничего не понимаешь по сути, но хоть что то полезное делать можешь. 2 недели только на это.

    Есть 2 пути программиста:

    1) Индивидуализм. Фриланс. Говносайты, говноприложения. Работа в не ИТ-шных фирмах или в мелких фирмочках где не поставлен процесс и по сути делаешь все один. Плохо тем, что не от кого получить обратную связь не с кем учиться, нет опытных коллег рядом. Всю жизнь будешь делать говносайты и говноприложения. Ну чуть чуть более цивильно. И все. Это предел.

    2) Если хотите все же заниматься в жизни чем посложнее и поинтереснее и поденежнее - учиться в большой конторе с коллегами. Где поставлен процесс. Где твою работу контролируют. Да придется ковыряться в куче чужого года, в куче легаси. Это нормально. Для высококвалифицированного программиста - чужой код и взаимодействие с коллегами крайне важно. Технически серьезные проекты делаются только большими группами программистов.
    Ответ написан
    4 комментария
  • Как построить маршруты в Laravel с одинаковым шаблоном для разных сущностей?

    @Kostik_1993
    Web Developer
    Нет, если никаких примесей к слагу не добавлять то только выносить таблицу со слагами отдельно как говорите вы сделано в друпале. И пользоваться полиморфными связями https://laravel.com/docs/5.6/eloquent-relationship...
    Ответ написан
    Комментировать
  • Как реализовать произвольные поля как на CMS Wordpress?

    AmdY
    @AmdY
    PHP и прочие вебштучки
    Это называется EAV, погуглите что это такое и заодно можете найти готовый пакет для laravel.
    Ответ написан
    Комментировать
  • Зачем в php делать переменную private если для нее есть сеттер и геттер?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    чтобы к ней не лезли на прямую.
    а) в интерфейсе можно определить только метод.
    б) переопределить можно только функцию.

    еще плюсы можно мокать в тестах
    и куча других плюсов использования гетеров и сеторов оопа.
    минусы чуть медленнее.
    Ответ написан
    Комментировать
  • Как провалидировать пару значений из нескольких таблиц на уникальность?

    @Faim
    Скорее всего у вас в таблице users должна быть колонка group_id для привязки пользователя к группе.

    В этом случае правило такое:
    'email' => Rule::unique('users')->where('group_id',  $request->input('group_id'))
    Ответ написан
    Комментировать
  • Как запустить крон в laravel?

    Sanasol
    @Sanasol Куратор тега Laravel
    нельзя просто так взять и загуглить ошибку
    https://laravel.com/docs/5.6/scheduling
    Посмотреть документацию? Да не, бред какой-то
    Ответ написан
    Комментировать
  • Где разместить вызов метода определения Geo в Laravel?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    В мидлваре.
    Ответ написан
    Комментировать
  • Как передать auth в родителя?

    Astatroth
    @Astatroth
    Я тут случайно
    Когда же вы, люди, научитесь уже использовать поиск или читать документацию, в самом деле... Даже на Тостере уже не раз этот вопрос поднимался: начиная с версии 5.3 в конструкторе контроллера недоступна сессия.
    Ответ написан
    Комментировать
  • Как отсортировать книги по первому автору в Elequent?

    @miki131
    Мне кажется запрос получится слишком сложным.
    Лучше вам в таблице книг добавить колонку куда записывать первого автора.
    Ответ написан
    Комментировать
  • Как сохранить данные со связью многие ко многим в laravel?

    @Novikofff
    PHP Developer
    Первое - нужно соблюдать правила именования:
    Модель - Item -> таблица - items
    Модель - Category -> таблица - categories
    Pivot таблица category_item - в едиственном числе в алфавитном порядке по названию полей с полями item_id, category_id.
    Очень классно об этом расписал greabock

    Если правила именования не соблюдаются, нужно четко указывать связующую таблицу и поля.
    <?php
    
    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Items extends Model
    {
        protected $fillable = ['name'];
    
        public function categories() // название релейшена во Множественном числе, связь же ManyToMany
        {  
          return $this->belongsToMany(
               Category::class,   // Название модели 
               'items_categories',  // название твоей связующей таблицы
               'item_id',  // ключ к текущей таблице в связующей таблице
               'category_id'  // ключ к внешней таблице в связующей таблице
           );
        }
    }


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

    $item = Item::find($id)
    $item->categories()->create($array_of_data)
    Ответ написан
    2 комментария
  • Что лучше - сессии или кэш?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    а как я знаю, сессию можно своровать

    беда, расходимся (
    Ответ написан
    8 комментариев
  • Как использовать пространства имен классов или название классов-моделей (для примера в проекте на Laravel)?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    А ещё есть вариант №3 — раскладывать все классы (в том числе и контроллеры с консольными командами) по разделам бизнес-логики, т.е. что-то типа DDD. И все варианты правильные, и все используются. И, наверное, существуют варианты №4, №5 и т.д.

    На этот вопрос нет единственно верного ответа.
    Ответ написан
    Комментировать
  • Какой подход лучше использовать для передачи переменной во все blade-шаблоны в Laravel?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Не нравятся «глобальные» переменные, используйте вариант №2.

    Не нравятся запросы в сервис-провайдерах, делайте их в каких-нибудь сторонних классах, а в сервис-провайдере вызывайте этот класс.
    Либо пусть сервис провайдер обращается к какому-то классу и получает все нужные переменные для композинга.

    Вариант №3: подписываться на события композинга самостоятельно и строить свою логику.
    Ответ написан
    Комментировать
  • Есть ли какие-либо недостатки у статических методов?

    @D3lphi
    Значит так, берем толстую тетрадь, ручку и пишем фразу "Статические методы не имеют отношения к ООП" до тех пор, пока не запомним это на всю жизнь.
    Суть объектно ориентированного программирование, как понятно из названия, заключается в том, что должен существовать объект. Статика существует не в контексте объекта, а в контексте класса! Из этого вытекает то, что на протяжении всего жизненного цикла вашего кода будет существовать лишь одно глобальное состояние статических членов класса.

    Использовать статику нужно в случае, если то, что вы ей описываете принадлежит всей группе объектов, а не одному. Например, у класса Human может быть статический метод numberOfLegs(), который возвращает количество ног у людей. Количество ног - это общее свойство для всех людей (Речь идет о здоровых людях). В данном случае можно было использовать константу класса, но это не так важно, ведь, по сути, константа - это тоже статический контекст. А вот имя - это уже свойство каждого отдельного человека. И очень важно чтобы статические методы не изменяли состояние системы в целом, не содержали побочных эффектов.
    В статические методы можно выносить какую либо служебную логику. Например, метод перевода числа из арабской в римскую запись следует сделать статическим.

    Есть ли у статического варианта какие-то подводные камни

    Большое количество. При чем, не таких уж и подводных. Из-за того, что статика глобальна, она плохо поддается тестированию, ее нельзя замокать. Глобальное состояние плохо поддается отладке. Отсутствует возможность подменить реализацию, так как это позволяют сделать объекты.
    Ответ написан
    4 комментария
  • Как защититься от ситуаций одновременного редактирования данных разными пользователями?

    Fragster
    @Fragster
    помогло? отметь решением!
    Ввести дополнительное поле "версия", и при записи его увеличивать. Ну а перед записью проверять, чтобы версия совпадала с редактируемой. Это называется "Оптимистическая блокировка".
    Ответ написан
    Комментировать
  • Как правильно организовать структуру базы данных для большого каталога?

    @Finsh
    Отдельная таблица для: товара, города, категории, параметр
    связь один ко многим: категория - товар(в товаре id категории)
    свять многие ко многим: город - товар, товар - параметр (в связующей храним значение параметра для конкретного товара)

    Во имя быстродействия используем разные инструменты типа поисковых движков(sphinx, elastic, solr) или первое время обходимся кешем
    Ответ написан
    Комментировать