Laravel по-русски

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

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

#27 Re: Laravel 5.x » Не могу создать запрос к базе данных » 01.06.2018 11:42:31

Нужно вот сюда

PHP
->whereDate('created_at','='Carbon::today()->toDateString())

Перед created_at добавить название таблицы этого поля. К примеру
%%(php)
—>whereDate(’purchases.created_at’,’=’, Carbon::today()->toDateString())
%% у меня так с one2m к m2m связях было

#29 Re: Laravel 5.x » Не определяются классы и методы » 17.05.2018 14:12:21

В некоторых фасадах есть phpdoc с имеющимися динамическими методами. К примеру тот же фасад Route.
Подключи этот фасад в web.php и IDE увидит все методы

#30 Re: Laravel 5.x » Помогите написать код более красиво ну или правильнее » 16.05.2018 23:14:57

У меня этот скоуп находится в трейте, а в самом скоупе ресолвлю сервис в котором описан код для динамической фильтрации (типо как Джефри показывал) ток немного под себя модифицировал.
Подключил трейт к нкжной модели, и все.

#31 Re: Laravel 5.x » Помогите написать код более красиво ну или правильнее » 16.05.2018 10:33:45

У меня стояла задача перенести магазин с престашоп, на ларавел.
В престашоп все (листинги, категории, атрибуты, все что отображается списком в таблице — фильтруется), и эти фильтры запоминаются. Я реализовал это через сессии. Ключем в сессии было название таблици модели, которая фильтруется

PHP
// Product model
public function getPaginated()
{
    return 
$this->filterable()->paginate($this->table self::PER_PAGE); // const PER_PAGE = '.per_page';
}

filterable — scope в котором я беру сохраненные фильтры из сессии для конкретной модели, и фильтрую модель по сохраненным в сессии фильтрам. Таким образом, если менеджер (или кто то еще) использовал фильтер ’показать только активные товары’, и потом пошел гулять по другим страницам в админке, а через n-ное кол-стао времени опять зашел в список товаров, фильтры которые он применял ранее сохранились, и отобрпзились только активные товары.

#32 Re: Laravel 5.x » Метод attach » 15.05.2018 11:11:58

Для полиморфических связей нужно использовать метод create. attach используется в m2m связях

#34 Re: Laravel 5.x » Помогите ошибка 404 » 07.05.2018 15:57:53

Проблема в сервере. Модуль мод реврайт включен?

#35 Re: Laravel 5.x » Работа с кешем » 27.04.2018 10:44:41

А зачем все статьи из базы кешировать? Кешируй только те, которые к примеру на главной выводить будишь.
При сохранении / обновлении / удалении статьи, можно использовать Observer что бы очищать / обновлять кеш.

#37 Re: Laravel 5.x » Бронирование номеров - алгоритм » 14.04.2018 18:05:56

Думаю насчет распределения по полу, одномесный / двухмесный, с ребенком / без, тоже ничего трудного.
Можно в бд сделать флаги (tinyint-ы), а все остальное типо кол-ство кроватей, раздельные кровати или нет и тд, все как характеристики номера.

#38 Re: Laravel 5.x » Https » 11.04.2018 14:35:54

Можно сгенерировать сертификаты, и тогда проблем вообще не будит.

@echo OFF
setlocal
set OPENSSL_CONF=D:\Development\OSPanel\modules\http\Apache-PHP-7.2-x64\conf\openssl.cnf
set PATH=%PATH%;D:\Development\OSPanel\modules\http\Apache-PHP-7.2-x64\bin
set dname=site.dev
set days=730
set key_bits=2048
set root_certs_path=D:\Development\OSPanel\userdata\config\cert_files

echo [trust_cert] > %dname%.cnf
echo subjectAltName=@alt_names >> %dname%.cnf
echo keyUsage=digitalSignature,keyEncipherment,dataEncipherment >> %dname%.cnf
echo extendedKeyUsage=serverAuth,clientAuth >> %dname%.cnf
echo [alt_names] >> %dname%.cnf
echo DNS.1 = %dname% >> %dname%.cnf
echo DNS.2 = %dname%.ospanel.io >> %dname%.cnf

openssl genrsa -out %dname%.key %key_bits%
openssl req -sha256 -new -utf8 -key %dname%.key -out %dname%.csr -subj /emailAddress="info\@ospanel\.io"/C=RU/stateOrProvinceName="Russian Federation"/L=Moscow/O="Open Server Panel"/OU=Software/CN=%dname%
rem Для создания сертификата, подписанного доверенным сертификатом
openssl x509 -sha256 -req -days %days% -in %dname%.csr -extfile %dname%.cnf -extensions trust_cert -CA %root_certs_path%\rootCA.crt -CAkey %root_certs_path%\rootCA.key -out %dname%.crt
del %dname%.csr
del %dname%.cnf
pause

Замените пути на свои, сохраните с расширением cmd, и запустите. Сертификаты будут созданы. Затем копируете их в ПУТЬ ДО ОПЕН СЕРВЕРА\userdata\config\cert_files.
Затем копируете конфиг активного сервера, он находится в ПУТЬ ДО ОПЕН СЕРВЕРА\userdata\config\Apache-PHP-7.2-x64_vhost (в моем случае так), и вставляете его в папку с проектом (где находится точка входа в приложение), для ларавела это public.
Меняете в этом конфиге пути до сертификатов. В моем случае это

SSLCertificateFile          "D:\Development\OSPanel\userdata\config\cert_files\site.dev.crt"
SSLCertificateKeyFile       "D:\Development\OSPanel\userdata\config\cert_files\site.dev.key"

Перезагружаете сервер, и браузер больше не будит ругаться.

#39 Re: Laravel 5.x » Как организовать связь belongsToMany X->X » 03.04.2018 21:51:59

Направить связь на саму модель и сделать промежуточную таблицу к примеру:

- id
- article1_id
- article2_id
PHP
// Article.php
public function related()
{
    return 
$this->belongsToMany(Article::class, 'related_article''article1_id''article2_id');
}

#40 Re: Laravel 5.x » удаление REST по картинке » 24.03.2018 14:15:42

Лучше все на js сделать. Поставить обычную ссылку на удаление, при нажатии на эту ссылку, делать гет запрос на сервер по этой же ссылке, только в поле method, поставить «DELETE». И ни каких форм не нужно.
Ну и про хедеры с токеном не забыть конечно же

#43 Re: Laravel 5.x » Миграция с CMS » 08.12.2017 18:07:47

  1. проставить специальный флаг для всех старых пользователей.

в общем, ты дал ответ — использовать два разных хэша, для старых и новых.

  1. При регистрации просто доверь всё делать Laravel, у новых юзеров никаких вариантов не будет.

А при аутентификации пытайся применить дефолтовый метод, а при неудаче — старый. И если вдруг старый сработал, то тут же генерируй и сохраняй новый хеш. Только в этот момент у тебя есть такая возможность, т.к. ты обладаешь незашифрованным паролем и знаешь, что он верный.
Спасибо. так и сделал

#44 Re: Laravel 5.x » Миграция с CMS » 06.12.2017 10:12:40

Нашел где престашоп хеширует пароль
https://github.com/PrestaShop/PrestaShop/blob/1.6.1.x/classes/Tools.php#L1180
сам _COOKIE_KEY_ на лок сервере вот так выглядит

define('_COOKIE_KEY_', '0d6Z7qEgRr1hPzspEfrpUFo7NT3YxeKVxMSx2sxqTantiF66Vbuzpaop');

Окей, теперь ясно как все это хешируется.
Теперь новый вопрос: как сделать что бы у новых покупателей пасс хешировался ларавелевским хешером, а старые использовали кастомный хешер? И как определять старый это покупатель, или новый?)

#45 Laravel 5.x » Миграция с CMS » 06.12.2017 09:50:29

TrueKanonir
Ответов: 5

Добрый день.
Переношу бд с престашоп в бд новой системы на ларавеле. Все четко перенеслось, но вот одна проблема. Как быть с паролями? Как вообще правильно перенести покупателей что бы они могли войти в свой акк? Хеш паролей совсем разный ведь. Как это вообще делают?)

#46 Re: Laravel 5.x » многократн. нажатие "Отправить" пишет в БД. кто как боролся? » 06.12.2017 09:45:41

  1. Совершенно не единственный и даже не лучший:

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

#47 Re: Laravel 5.x » многократн. нажатие "Отправить" пишет в БД. кто как боролся? » 05.12.2017 18:37:09

  1. Только лучше блокировать не кнопку, а саму форму (нажатие на enter никто не отменял)

Действительно. Не прдумал как то об этом)

#49 Re: Laravel 5.x » Запись данных в БД из массива » 27.11.2017 16:34:35

А если попробовать что то типо <input name="product_id[{{ $id }}]" /> и с чеком так же поступить. Тогда на сервер улетит нужный массив.
Как варриант

#50 Re: Laravel 5.x » Механизм комментирования в Laravel ? или кто чем пользуется? » 24.11.2017 15:21:44

https://laracasts.com/series/how-do-i/episodes/9

Если нет подписки, на рутрекере можно стянуть.

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