Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
DirectoryIndex public/index.php
и
RewriteRule ^(.*)$ public/index.php [L]
как бы намекают что у тебя сайт (был) настроен не на месте. или на месте но не настроен ))) потому что корень сайта уже должен быть в папке public и значит слова public уже не должно появляться в .htaccess
если ты что-то решил у себя, то поделись с другими. не веди себя как будто тебе здесь должны, а ты ничего не должен. мы все в одном положении!
Друг, чтобы программировать надо научиться вопросы задавать внятно. Я несколько раз перечитывал и не понял в чем затруднение. Вот это просто шедевр:
где id=3 потом взять id где равен 3 и пройти дальше.
куда тебе надо пойти?
Общее количество записей добывается если убрать условие where(), оставить только count()
Через отношения или чтобы имена не светились? Это разные задачи.
Если буквально хочешь использовать отношения, то смотри в доках методы with, withCount. Это не равноценно join, т.е. будет другой запрос, но цель возможно будет достигнута.
Если надо взять имя таблицы из определения класса-модели, то сам Тейлор совтует делать так: with(new Model)->getTable();
https://laravel.com/docs/8.x/migrations … ng-indexes
$table->unique(['user_id', 'group_at']);
Странно что нет метода create. Покажи свой класс User. И скопируй сюда об ошибке как оно есть буквально.
[offtopic]
не налегай сильно на видеоуроки. они приучают отключать голову и просто копировать текст. чтобы росли скиллы в программировании, надо себя напрягать - как с мышцами.
[/offtopic]
@loren, про расширения vs не знаю, так как не пользуюсь. А про открытие artisan через open server - он и не должен работать в веб-сервере как php! Потому что у него нет расширения. Странно что ты вообще имеешь к нему доступ через веб-сервер, ведь он должен быть за пределами Document Root. Надо настроить сайт так, чтобы он начинался с папки public, а не с корня проекта.
Сейчас все это берется из БД. Соответственно, в каждом таком инклуде я вызываю метод контроллера для получения нужных данных.
Вот это неожиданный переход. Почему именно метод контроллера? ))) По классике данные доставляются в представление через параметры вызова view. Если этого мало - есть View Composer. А если прям сильно хочется обращаться к чьим-то методам, то в шаблоне можно добывать некий сервис через @inject и обращаться к его методам.
Я бы таки ограничился параметрами вьюхи. Из главного представления в инклуды передавал бы нужные им параметры.
Есть еще компоненты это типа "умные инклуды".
Будь я админ, я б тебя забанил за ссылки в первом же посте. )))
В программировании самое важное это умение внятно сформулировать цель. Без этого будет просто трата времени и сил. Весь твой пост это пример невнятности.
Роутом (маршрутом) обычно называют соответствие URL и обработчика. То что описано в routes/web.php. А не функция route().
Такие варианты не срабатывают
Потому что не должны. Не надо стрелять вслепую. Надо осмысленно писать код, зная синтаксис.
Если у тебя проблема с подстановкой значений в строку, то бд здесь скорее всего не при чем. Почитай документацию про строки в PHP. Про шаблоны в Laravel. Попробуй так и сяк (без бд). Накопи опыт.
Форум не заменит документацию.
class Locatiobn extends Model
{
public $table = 'v_locations';
. . .
Если единственный вариант прочитать гео-информацию в удобном виде это вызов функции БД, то наверное тебе помогут представления (view) на уровне базы. Подключай вью с уже преобразованными данными вместо таблицы. И не будет никакой разницы через связь ты добираешься до поля, или без неё.
CREATE VIEW v_locations AS SELECT ST_AsGeoJSON(geometry) as geometry ... FROM locations
А кроме координат со связанными данными всё окей? Что насчет чтения locations напрямую без реляции с shops?
Из текста не очевидно в чем именно проблема - настроена ли связь таблиц, добавляли ли casts.
1. Не так у тебя с именами. Ты зачем-то избегаешь общепринятого термина parent_id, у тебя это menu_id. Как следствие, странный нейминг переполз в название методов. И стало ничерта непонятно где что.
2. Ты не обозначил желаемый формат данных на выходе. В идеале надо показать пример исходных данных - в таблице. И как должен выглядеть результат - например в формате выдачи var_export()
Сделай заготовку с данными на https://www.db-fiddle.com/ пожалуйста. Ты упростишь работу тем, кто захочет помочь. Не заставляй нас тратить слишком много времени.
Во-первых, стандартный SQL не приспособлен для запросов типа "далее есть записи с...". Но можно переосмыслить задачу и добиться нужного результата.
Например так: выбрать всех пользователей, у которых не встречалось значение true (через группировку по пользователю). Для таких пользователей вывести все их записи.
Это можно реализовать через джойн или через where in подзапрос. В любом случае, начинать лучше с сочинения запроса на настоящем SQL, проверить его на правдоподобных данных и только потом выразить в виде Eloquent Query Builder.
удали /etc/php81w/php.d/40-psr.ini
Если решать на уровне базы, то понадобится формула для вычисления возраста и связь таблиц через неравенство, например через выражение 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 здесь на случай если у нас не описана какая-то возрастная категория, но мы не хотим терять в выводе пользователя.
когда ищут соучредителей в программистском чате это значит нужны наивные бесплатные работники
Igor23, найдите/влоджите свои инвестиции чтобы оплачивать труд и не придется делиться половиной прибыли. как вам такое?
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. лишние пробелы тут твои, я только скопировал )))
Новый 9 LTS вышел. Пора добавлять циферку в название раздела.
Основные нововведения перечислены на странице Release Notes
* Поддерживает только PHP 8.0 и новее.
* Symfony Mailer теперь вместо заброшенного Swift Mailer
* Продвинутый способ определения Акцессоров/Мутаторов в Eloquent
и другие ништяки
А что в базе, какие вообще таблицы вы завели для хранения этих объектов? Что фактически сохраняется?
Маленький секрет: буквально наследовать классы-модели не надо. Достаточно прописать связи согласно документации и создать таблицы с нужным набором полей.
но стоит изменить букву M на m в пути и ошибка как у моего класса: failed to open stream
дык, в unix-ах файловые системы обычно регистрозависимые! это в винде FAT и NTFS регистр игнорируют. когда прям надо прописать исключение, когда имя папки и класса должны различаться, то прописывают это в composer.json. в ларавель одно такое исключение есть сразу - для папки app.
бывают случаи самообмана, когда класс размещен не там где его будет искать автолоадер (не в той папке или регистр файла/папки не тот) , но ты сделал composer dump и размещение класса сохранилось в специальном кеше. тогда можно работать и не знать, что проблема есть. а она возродится когда ты перенесешь проект куда-то ещё и там кеша нет. очень неприятный случай.
короче, с регистром имен будь осторожен. и всегда обращай внимание на "желтые" предупреждения composer - они подсказки о потенциальных проблемах.
<? - не делайте так. современные версии пхп по умолчанию не используют короткие теги. а раз интерпретатор не воспринимает текст за ним как код пхп, то и класс не будет объявлен.
Вообщем решил проблему (если можно так сказать), методом создания модели через artisan.
в этом случае файл создаётся с нормальными тегами.
Ну в общем случае выбрать запись с максимальным чем-то это
...
order by something desc
limit 1
пивот таблица она такая же таблица как и другие, имеет имя и присоединена к запросу через join. поэтому думаю на неё можно ссылатся. не проверял.
$athlete = $athlete->groups()->orderBy('athlets_groups.created_at', 'desc')->first();
если не сработает, то можно использовать явный синтаксис join() для пивот и групп вместо "автоматического" ->groups()
Сначала оффтопик:
- Неудобно читать код с неправильными отступами.
- Вы же видите, что stylе у вас повторяется. Вынесите его в таблицу стилей, зачем этот визуальный шум?
Ваш подход со сравнением списка исследований неверен. Он может дать как ложно положительный, так и ложно отрицательный результат. Возможно это и случается, поэтому происходит "дублирование" и съезжание верстки из-за лишних колонок. Вы же не выходите из цикла при совпадении, а продолжаете искать дальше и, возможно, ещё раз совпадает и выводится.
По-хорошему надо смотреть буквально оказанную услугу, а не исследования. То есть в направлении должна быть ссылка на услугу. Если она не пустая, то выводите название услуги. Если пустая, то выводите список исследований.
Надо чтобы бекенд обращался к пагинатору.
https://laravel.ru/docs/v3/views/pagination
https://laravel.com/docs/8.x/pagination