Laravel по-русски

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

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

#3 Re: Laravel 6/7/8/9 » Помогите найти решение с определением возрастной категории человека » 22.08.2022 08:20:05

Если решать на уровне базы, то понадобится формула для вычисления возраста и связь таблиц через неравенство, например через выражение BETWEEN. Важно чтобы значения в определении возрастной категории не пересекались и не содержали "дыр".

Нашел такие формулы для возраста на текущий момент:
DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), users.dob)), '%Y')+0
или
TIMESTAMPDIFF(YEAR, dob, NOW())

А запрос в целом получился такой:

SELECT u.id, u.user_name, u.age, ages.age_title
FROM (
  SELECT users.*, timestampdiff(YEAR, users.dob, now()) AS age
  FROM users
) AS u
LEFT JOIN ages ON u.age BETWEEN ages.age_from AND ages.age_to

left join здесь на случай если у нас не описана какая-то возрастная категория, но мы не хотим терять в выводе пользователя.

https://www.db-fiddle.com/f/tXjJazKZT7wqjyqr4MoNx8/0

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

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

#5 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. лишние пробелы тут твои, я только скопировал )))

#6 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
и другие ништяки

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

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

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

#8 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 - они подсказки о потенциальных проблемах.

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

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

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

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

#10 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()

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

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


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

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

#13 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.

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

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

#15 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" ты разобрался?

#16 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, поэтому это всё мои домыслы.

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

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

#18 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 чтобы исключить вариант что ты изменил маршруты, а они по прежнему берутся из старого кеша.

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

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

#21 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

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

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

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

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

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

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

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

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

#25 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

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