Laravel по-русски

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

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

#1 Re: Laravel 5.x » Не видит подключаемые link (css,js) на 127.0.0.1:8000 » 01.02.2023 16:19:07

DirectoryIndex public/index.php
и
RewriteRule ^(.*)$ public/index.php [L]

как бы намекают что у тебя сайт (был) настроен не на месте. или на месте но не настроен ))) потому что корень сайта уже должен быть в папке public и значит слова public уже не должно появляться в .htaccess

если ты что-то решил у себя, то поделись с другими. не веди себя как будто тебе здесь должны, а ты ничего не должен. мы все в одном положении!

#2 Re: Laravel 6/7/8/9 » Надо узнать количество записей » 29.01.2023 14:18:56

Друг, чтобы программировать надо научиться вопросы задавать внятно. Я несколько раз перечитывал и не понял в чем затруднение. Вот это просто шедевр:

где id=3 потом взять id где равен 3 и пройти дальше.

куда тебе надо пойти?

Общее количество записей добывается если убрать условие where(), оставить только count()

#3 Re: Laravel 6/7/8/9 » Отношения моделей вместо построителя запросов » 29.01.2023 14:06:59

Через отношения или чтобы имена не светились? Это разные задачи.

Если буквально хочешь использовать отношения, то смотри в доках методы with, withCount. Это не равноценно join, т.е. будет другой запрос, но цель возможно будет достигнута.

Если надо взять имя таблицы из определения класса-модели, то сам Тейлор совтует делать так: with(new Model)->getTable();

#5 Re: Хорошие практики (FAQ) » Регистрация пользователя, User::create() нет такого метода » 29.01.2023 13:51:00

Странно что нет метода create. Покажи свой класс User. И скопируй сюда об ошибке как оно есть буквально.
[offtopic]
не налегай сильно на видеоуроки. они приучают отключать голову и просто копировать текст. чтобы росли скиллы в программировании, надо себя напрягать - как с мышцами.
[/offtopic]

#6 Re: Laravel 6/7/8/9 » VS code не видит namespace. Запуск фреймворка » 07.01.2023 19:08:02

@loren, про расширения vs не знаю, так как не пользуюсь. А про открытие artisan через open server - он и не должен работать в веб-сервере как php! Потому что у него нет расширения. Странно что ты вообще имеешь к нему доступ через веб-сервер, ведь он должен быть за пределами Document Root. Надо настроить сайт так, чтобы он начинался с папки public, а не с корня проекта.

#7 Re: Laravel 6/7/8/9 » Вызов метода контроллера непосредственно в шаблоне Laravel » 19.12.2022 10:16:43

Сейчас все это берется из БД. Соответственно, в каждом таком инклуде я вызываю метод контроллера для получения нужных данных.

Вот это неожиданный переход. Почему именно метод контроллера? ))) По классике данные доставляются в представление через параметры вызова view. Если этого мало - есть View Composer. А если прям сильно хочется обращаться к чьим-то методам, то в шаблоне можно добывать некий сервис через @inject и обращаться к его методам.

Я бы таки ограничился параметрами вьюхи. Из главного представления в инклуды передавал бы нужные им параметры.
Есть еще компоненты это типа "умные инклуды".

#8 Re: Laravel 6/7/8/9 » Подскажите, как в route подставить данные из бд? » 07.12.2022 21:40:48

Будь я админ, я б тебя забанил за ссылки в первом же посте. )))

В программировании самое важное это умение внятно сформулировать цель. Без этого будет просто трата времени и сил. Весь твой пост это пример невнятности.

Роутом (маршрутом) обычно называют соответствие URL и обработчика. То что описано в routes/web.php. А не функция route().

Такие варианты не срабатывают

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

Если у тебя проблема с подстановкой значений в строку, то бд здесь скорее всего не при чем. Почитай документацию про строки в PHP. Про шаблоны в Laravel. Попробуй так и сяк (без бд). Накопи опыт.

Форум не заменит документацию.

#10 Re: Laravel 6/7/8/9 » Преобразование поля Eloquent » 27.11.2022 11:48:31

Если единственный вариант прочитать гео-информацию в удобном виде это вызов функции БД, то наверное тебе помогут представления (view) на уровне базы. Подключай вью с уже преобразованными данными вместо таблицы. И не будет никакой разницы через связь ты добираешься до поля, или без неё.

CREATE VIEW v_locations AS SELECT ST_AsGeoJSON(geometry) as geometry ... FROM locations

#11 Re: Laravel 6/7/8/9 » Преобразование поля Eloquent » 23.11.2022 16:30:25

А кроме координат со связанными данными всё окей? Что насчет чтения locations напрямую без реляции с shops?

Из текста не очевидно в чем именно проблема - настроена ли связь таблиц, добавляли ли casts.

#12 Re: Laravel 6/7/8/9 » Проблемма с вложенностью » 27.10.2022 20:57:19

1. Не так у тебя с именами. Ты зачем-то избегаешь общепринятого термина parent_id, у тебя это menu_id. Как следствие, странный нейминг переполз в название методов. И стало ничерта непонятно где что.
2. Ты не обозначил желаемый формат данных на выходе. В идеале надо показать пример исходных данных -  в таблице. И как должен выглядеть результат - например в формате выдачи var_export()

#13 Re: Хорошие практики (FAQ) » Возможно ли в один запрос...? » 27.10.2022 20:49:48

Сделай заготовку с данными на https://www.db-fiddle.com/ пожалуйста. Ты упростишь работу тем, кто захочет помочь. Не заставляй нас тратить слишком много времени.

#14 Re: Хорошие практики (FAQ) » Возможно ли в один запрос...? » 27.10.2022 20:47:40

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

Например так: выбрать всех пользователей, у которых не встречалось значение true (через группировку по пользователю). Для таких пользователей вывести все их записи.

Это можно реализовать через джойн или через where in подзапрос. В любом случае, начинать лучше с сочинения запроса на настоящем SQL, проверить его на правдоподобных данных и только потом выразить в виде Eloquent Query Builder.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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