Laravel по-русски

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

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

#1 Re: Вакансии » Ищу соучредителей-разработчиков » 02.03.2022 14:05:22

когда ищут соучредителей в программистском чате это значит нужны наивные бесплатные работники smile
Igor23, найдите/влоджите свои инвестиции чтобы оплачивать труд и не придется делиться половиной прибыли. как вам такое?

#2 Re: Laravel 6/7/8/9 » Как вытащить с таблицы данные, которых нет в другой таблице? » 02.03.2022 14:01:28

where('table_2.name', null) означает что запись из table_2 отсутствует (я бы таки указал здесь id а не name)
ну нету записи, с чем ты собираешся сравнивать $id в следующем условии where('table_2. another_id' ,'!= ', $id)?

я не знаю изначальной задачи, но предположу что второе условие надо изменить на

->where(function($query) {
  $query->where('table_2. another_id' ,'!= ', $id)
    ->orWhereNull('table_2. another_id');
})

P.S. лишние пробелы тут твои, я только скопировал )))

#3 Laravel 6/7/8/9 » Laravel 9 is Now Released! » 09.02.2022 14:47:11

artoodetoo
Ответов: 0

Новый 9 LTS вышел. Пора добавлять циферку в название раздела.

wEwN97h.png

Основные нововведения перечислены на странице Release Notes
* Поддерживает только PHP 8.0 и новее.
* Symfony Mailer теперь вместо заброшенного Swift Mailer
* Продвинутый способ определения Акцессоров/Мутаторов в Eloquent
и другие ништяки

#4 Re: Laravel 6/7/8/9 » Использовании полиморфных связей из дочерних моделей » 27.01.2022 13:47:32

А что в базе, какие вообще таблицы вы завели для хранения этих объектов? Что фактически сохраняется?

Маленький секрет: буквально наследовать классы-модели не надо. Достаточно прописать связи согласно документации и создать таблицы с нужным набором полей.

#5 Re: Laravel 6/7/8/9 » Почему-то не подключается свой обычный простой класс в laravel 8 » 27.01.2022 12:32:08

но стоит изменить букву M на m в пути и ошибка как у моего класса: failed to open stream

дык, в unix-ах файловые системы обычно регистрозависимые! это в винде FAT и NTFS регистр игнорируют. когда прям надо прописать исключение, когда имя папки и класса должны различаться, то прописывают это в composer.json. в ларавель одно такое исключение есть сразу - для папки app.

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

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

#6 Re: Laravel 6/7/8/9 » Почему-то не подключается свой обычный простой класс в laravel 8 » 27.01.2022 12:22:36

<? - не делайте так. современные версии пхп по умолчанию не используют короткие теги. а раз интерпретатор не воспринимает текст за ним как код пхп, то и класс не будет объявлен.

Вообщем решил проблему (если можно так сказать), методом создания модели через artisan.

в этом случае файл создаётся с нормальными тегами.

#7 Re: Laravel 6/7/8/9 » Подскажите как правильно написать запрос. » 23.12.2021 15:12:25

Ну в общем случае выбрать запись с максимальным чем-то это

...
order by something desc
limit 1

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

$athlete = $athlete->groups()->orderBy('athlets_groups.created_at', 'desc')->first();

если не сработает, то можно использовать явный синтаксис join() для пивот и групп вместо "автоматического" ->groups()

#8 Re: Laravel 6/7/8/9 » Вывод значений » 25.11.2021 07:07:04

Сначала оффтопик:
- Неудобно читать код с неправильными отступами.
- Вы же видите, что stylе у вас повторяется. Вынесите его в таблицу стилей, зачем этот визуальный шум?


Ваш подход со сравнением списка исследований неверен. Он может дать как ложно положительный, так и ложно отрицательный результат. Возможно это и случается, поэтому происходит "дублирование" и съезжание верстки из-за лишних колонок. Вы же не выходите из цикла при совпадении, а продолжаете искать дальше и, возможно, ещё раз совпадает и выводится.

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

#10 Re: Общий раздел » Какая стабильная версия Laravel » 03.10.2021 13:49:49

Ещё немного о LTS: заявленные сроки поддержки и требуемые версии PHP. Это может быть важно для планирования апгрейда.

ElHlhpr.png
B2tAW6w.png
и поддержка версий PHP
vyJSc1x.png

в composer.json мы видим какую версию PHP поддерживает данная версия Laravel
ветка 5.5 "php": ">=7.0.0" (т.е. с 8й уже не работает!)
ветка 6.0 "php": "^7.2"
тег 6.19 "php": "^7.2.5|^8.0" (это по прежнему LTS и с этой минорной версии можно ставить на PHP8)
ветка 8.x "php": "^7.3|^8.0"

Если в октябре 2021г думаю о стабильности на ближайшие несколько месяцев, я закладываю работу с PHP8, а значит проект должен заявлять зависимость не ниже Laravel ^6.19.

composer create-project laravel/laravel:^6.19 .

На сегодня такая команда создаст проект с ядром Laravel 6.20.34

PHP подойдёт версии 7.4. Но лучше отловить проблемы совместимости с новым PHP уже сегодня, чем в новом году аврально менять и пыху и фреймворк. Поэтому я бы уже сегодня использовал PHP8. Восьмёрка уже стабильна, а седьмая версия доживает свой век.

В новом 2022г можно будет переходить на Laravel 9 оставаясь на PHP8.

#11 Re: Laravel 5.x » Обновление до последней версии » 21.09.2021 15:09:53

С помощью https://laravelshift.com/ выполнить "черновую" работу. Потому тестировать и допиливать. По пути можно наткнуться на отстутствие актуальной версии у стороннего пакета или обратную несовместимость кода на PHP. Ведь если фреймворк старый, то и пыха наверняка старая используется. Совсем без ручной работы не получится.

#12 Re: Laravel 6/7/8/9 » Ошибка "The GET method is not supported for this route" при использова » 30.08.2021 17:36:58

Круто. Но каким образом это связано с "GET method is not supported" ты разобрался?

#13 Re: Laravel 6/7/8/9 » Ошибка "The GET method is not supported for this route" при использова » 30.08.2021 14:32:59

Это нормально иметь два и более middleware.

Я думаю что ошибка "The GET method is not supported for this route. Supported methods: POST" происходит при обращении к api/v1/auth/login . Вероятно это результат редиректа при попытке обращения к кабинету от лица неаутентифицированного пользователя.

Я не пробовал L8 и Sanctum, поэтому это всё мои домыслы.

#14 Re: Laravel 6/7/8/9 » Запретить смену языка для одного контроллера » 30.08.2021 10:38:59

Ничего не знаю про пакет, который ты используешь. Но:
Мне кажется ты смешиваешь локализацию пользовательского интерфейса и локализацию контента. Страницы, которые ты помещаешь в Route::multilingual, вероятно должны выдавать контент на том или ином языке, независимо от того, какой язык является предпочтительным для пользователя, т.е. на каком языке пишутся меню и служебные сообщения. Не обязательно им совпадать!
Исходя из этого, твои два метода выбора языка должны устанавливать разные переменные внутри приложения и ты сможешь использовать их в разных в приложении независимо.

#15 Re: Laravel 6/7/8/9 » Ошибка "The GET method is not supported for this route" при использова » 30.08.2021 10:22:17

Наверняка ты смотришь не на тот маршрут, про который сообщение об ошибке.

На всякий случай, попробуй команды php artisan route:list и php artisan route:clear чтобы исключить вариант что ты изменил маршруты, а они по прежнему берутся из старого кеша.

#17 Re: Laravel 6/7/8/9 » Как правильно сделать redirectTo по role на Lаravel 8? » 27.08.2021 08:13:35

Попробуй использовать отладку: доходит ли в твой метод управление? Посмотри чему равен Auth::user() и Auth::check(), как выполняются твои условия по шагам.

#18 Re: Laravel 6/7/8/9 » Не понимаю ORM, зная при этом SQL, может готовить не умею? » 27.08.2021 08:07:17

Пиши́те почти также как на сыром SQL:

$vehicles = Vehicle::join('carriers as c', 'c.id', '=', 'vehicles.carrier_id')
    ->where('c.user_id', '=', '1');
    ->orderBy('c.name')
    ->orderBy('vehicles.id')
    ->select('vehicles.*', 'c.name as carrier_name')
    ->get();

Eloquent это конечно ORM, но слабенький smile

#19 Re: Laravel 6/7/8/9 » Передать количество повторений в наследуемый шаблон Blade » 23.08.2021 08:09:39

В простейшем случае счётчик вообще не надо передавать, если он всегда одинаков. Определяй его в incl.
Другой вариант: передавать значение в @extends('layouts.parent', ['guest_count' => 20])
Третий вариант: получать значение через blade composer непосредственно в incl

Что будет "лучше/красивее" — это очень субъективно. Пробуй разное, развивай свой активный словарь и решай что лучше для тебя.

#20 Re: Laravel 5.x » Image source not readable » 19.08.2021 16:21:00

Видимо что-то изменилось - пути возможно. Надо дебажить: если не через xdebug, то выводя промежуточные значения в логи.

P.S. Ох, некропостингом занимаюсь. ))) Спамобот сбил меня с толку, изобразил живую дискуссию.

#21 Re: Laravel 5.x » Ошибка при переименовывании столбцов » 05.08.2021 15:44:13

Ну не должно быть ошибки при соединении с БД. проект вообще работает с базой кроме этой миграции?
Попробуй установить все компоненты заново: удали папку vendors и файл composer.lock, затем сделай composer install. Должно пройти без ошибок.

#22 Re: Laravel 6/7/8/9 » падают юнит тесты » 27.07.2021 07:51:08

Если цель теста в проверке что возникает исключение (а abort 404 вызывает исключение), то тебе нужен expectException()

Ну и, само собой, надо не накосячить с кодом. Ошибка 500 говорит о том, что где-то ты облажался. Я не могу ничего подсказать про конкретную библиотеку и походу никто здесь не в курсе.

https://thephp.cc/articles/questioning- … -practices
https://phpunit.de/manual/6.5/en/writin … exceptions

#23 Re: Laravel 6/7/8/9 » Не могу организовать редирект » 06.07.2021 14:00:07

Ларавель использует симфоневский Http Foundation, поэтому вероятно сходное поведение будет и в множестве других мест: новые версии PHPBB, Drupal и др.

При создании сервиса в т.ч. контроллера можно указать класс или интерфейс для инъекции. Это тема большая, не буду пытаться чему-то учить.

Если этот код не увидит никто кроме тебя, то ради бога, используй инородные сущности. Иначе не надо ))) не провоцируй хейт.

Да, правильно через посредников.

DB будет доступен. Также как и классы-модели. Будет всё доступно, кроме объектов, порождаемых в middleware.

#24 Re: Laravel 6/7/8/9 » Не могу организовать редирект » 05.07.2021 21:49:51

  1. Мне не совсем понятно, почему я могу получить доступ к сессии из любого метода класса, а из конструктора не могу.

Потому что так устроен стек обработки запроса. Сначала сначала выясняется конечная точка маршрута — метод контроллера, создается экземпляр объекта этого контроллера. Потом вызываются мидлвары в прямом проходе чтобы иметь возможность поработать с запросом. И на вершине стека срабатывает обработчик роута, создается ответ на запрос. Затем мидлвары получают управление в обратном порядке, чтобы иметь возможность поработать с объектом ответа.

#25 Re: Laravel 6/7/8/9 » Не могу организовать редирект » 03.07.2021 06:51:29

Конструктор контроллера выполняется ДО того как обрабатываются куки и происходит идентификация пользователя. Поэтому проверка не работает.

Если я правильно понял задумку, то вам надо воспользоваться controller middleware. Объявление middleware не означает что её код выполнится прямо в этом месте и в этот момент. Мы таким образом помещаем проверку в очередь (стек) посредников, которые выполнятся позже конструктора, но перед обращением к методу-экшену маршрута.

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