Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Какое-то время работал с Yii2, был приятно удивлен коллегами, они были сильные разработчики (команда - 5 человека включая меня). Хоть я и не освоил Yii хорошо, но видел код своих коллег, по которому и делал свои выводы о этом фреймворке.
Мой ответ такой - я признаю только Laravel и Symphony.
По поводу виджетов - есть речь о админке, то для Laravel существуют пакеты разной сложности под это дело.
Использовать виджеты для пользовательского-клиентского интерфейса - сомнительное дело.
или
<a href="{{ route('admin.confirmUser',$user->token) }}"
title="{{ trans('admins.confirmUser') }}">
@if ($user->verified)
<i style="color:green;" class="fa fa-check-circle" aria-hidden="true"></i>
@else
<i style="color:red;" class="fa fa-check-circle" aria-hidden="true"></i>
@endif
</a>
public function confirmUser ($id)
{
User::whereId($id)->firstOrFail()->confirmEmail();
return redirect('admin/users');
}
Местами спорно, синтаксис не очень, но в целом фичи ларавела используются https://github.com/bestmomo/laravel5-example
здесь пример модульной архитектуры https://github.com/bstrahija/laravel-modules-example (пакетов для модульной загрузки ларавела много, разных. единого соглашения по модулям и их загрузке - нет).
По всей видимости, все не так
Уже как-то публиковал эту ссылку на laravel.ru
https://ahrameev.ru/article/why-do-php- … cture.html
Посмотрите какие нибудь хорошие проекты на гитхабе, так-же всем новичкам рекомендую не пожалеть пару баксов на оплату https://laracasts.com/
Ну, а ваш вопрос
Что я не так делаю?
это тема отдельной книги.
А как сессия должна появится у первых пользователей?
В чем идея такого подхода?
Storage::put('images/folder/qqq/myfilename.txt', file_get_contents($request->file('file')->getRealPath()));
Ну и UploadFile можно просто через ->move сохранять.
try-catch ? http://php.net/manual/ru/language.exceptions.php
$vk = new VKApiClient();
try {
$response = $vk->wall()->delete($access_token, array(
'owner_id' => $owner_id, //у группы отрицательное поле
'post_id' => $post_id,
));
} catch (\Exception $e) {
$response = new MyResponseClass($e->getMessage());
}
unset($man->prices, $man->spo_id); //fixme: А то не сохранится man при бронировке.
https://laravel.com/docs/5.6/eloquent#mass-assignment см. fillable
Оно?
А если поставить google recaptcha на покупку каждого предмета? Прокатит?
Это не решение проблемы, а уменьшение вероятности.
Proger_XP показал достаточное и простое решение проблемы, если оно тебя не устраивает - то остальное просто игра в "верю, не верю".
Рекаптча поможет, косвенно.
Вы назвали решение - универсальным. Я привер пример "Вот же, смотрите, не универсальное".
В этой теме речь идет об интернет-магазине
Выходит то решение не универсальное. Верно?
А специфично для интернет-магазинов, маленького и среднего оборота.
Если вы считаете, что кто-то выразился слишком категорично - так поправляйте, восстанавливайте "правило последнего впечатления". Критика - это нормально. В споре рождается истина, и пока нет перехода на личности - это тоже нормально.
Тут я конечно согласен.
Я считаю, что я привел ультимативный контраргумент.
Но, если я буду так реагировать на каждое сообщение, в котором меня некорректно поправят, то вместо форума про laravel - появится флудилка.
В большинстве случаев - мне все равно, но, вы - 1) администратор, 2) делаете это чаще всех.
Решение вполне универсальное, только детали запроса несколько зависят от ситуации.
Могу поспорить, что все сильно зависит от общих подходов в проекте.
Как минимум - вы показали вариант для SQL баз данных. Существуют ведь и другие?
Более того, в моем случае - нагрузки настолько высокие, что если я буду на каждое списывание выполнять запрос
UPDATE users
SET money = @money := money - :money
WHERE id = :id AND money >= :money
То я получу очень большое проседание производительности БД из-за локов (у меня 41k rps, в основном апдейты баланса на небольшой набор кортежей).
Поэтому ваше решение - не универсальное.
P.S. @Proger_XP вы часто "врываетесь" в топик последним, цитируете кучу сообщений, поправляете их (хотя все сообщения корректные и если в чем-то некорректные - то лишь ради упрощения для читателей), тем самым жестко нарушаете баланс "правило последнего впечатления" (остается негативное впечатления о всех предыдущих комментаторов). Лично мне это доставляет негативные эмоции, ибо вместо свободного общения, я жду, когда же придет Proger_XP и перекрестит здесь все. Спасибо.
Огромное спасибо. Действительно возможен дюп. А может быть подскажите как я могу (через какие инструменты) отправить сразу 10 запросов и купить 10 предметов по цене 1?
Огромное количество самописных магазинов подвержены этой уязвимостью. Расчет на то, что их магазин (магазин с таким багом) никому не нужен и на ручную модерацию.
Надо одновременно запустить кучу запросов на бэкенд. Думаю инструментов в публичном доступе много. Подсказать не смогу.
Может быть тот-же Postman так умеет.
if ( $user->money >= $item_price )
Вроде раньше в играх такой баг назывался "дюп".
Небезопасная для потоков проверка (Non Thread Safe).
Если у меня money = 100, а $item_price = 100. Я с легкостью могу купить хоть 10 таких итемов. Запустив кучу потоков на покупку в одно время.
Тоже самое и с max_count.
Тоже самое и с
$user->money = $user->money - $item_price;
Они все - небезопасные операции.
Решение проблемы - индивидуальное для каждого проекта.
$second = $first->second()->firstOrNew($request->only((new MyModel())->getFillable());
Пожалуйста, предложите конкретное решение, которое Вы считаете лучшим.
Предлагать конкретное решение вслепую?
Может, создать модель главной страницы и вынести туда?
Звучит не очень.
Создай просто отдельный класс, скажем в папке Common, подбери название класса, оно должно отражать, что объединяет все эти запросы.
1 метод - 1 запрос.
С shared хостингами проблемы.
Но, у laravel никогда не стояла задача поддерживать такие хостинги.
VPS стоят не дорого.
Может быть из-за того что поле 'description' встречается несколько раз на странице?
немного покопавшись, я понял, что модель данных и экземпляр данных имеют общее только связку, но не класс.
Не понял. Что такое модель данных, а что экземпляр?
Ты получил ошибку, потому-что не стал использовать ORM (тобишь Eloquent), а сделал вывборку через \DB и получил массив stdClass[].
Используй ORM, тогда метод getUrls будет работать.
public function animals(){
$bestiary = \App\Bestiary::query()->whereNull('inherited_id')->get();
return view('lk/bestiary',['animals' => $bestiary, 'baseUrl' => 'bestiary']);
}
или сразу
public function animals(){
$bestiary = \App\Bestiary::whereNull('inherited_id')->get();
return view('lk/bestiary',['animals' => $bestiary, 'baseUrl' => 'bestiary']);
}
Билдер и так можно собирать как хочется.
А у вас какие-то сложности с репозиторием.
Вот что я имею в виду, вы добавили проблемы. Здесь что-то не так
Как сделать лучше - большая тема. Посмотрите в сторону готовых репозиториев, на гитхабе они есть. Может что понравится.
что вы имеете в виду? не совсем Вас поняла(
Это большая тема для обсуждения.
я хочу чтобы методы были как можно более универсальны для любой модели и любых отношений с ней. и соотвественно и выборки.
Когда будете "спотыкаться" об собственный репозиторий (например текущая проблема), тогда и придет осознание, что в нем не так.
Вопрос практики.
есть join в конструкторах, есть WhereHas() я читала. но не могу привязать это все воедино. и как лучше использовать? join как-то избыточен получается если есть with с отношениями...
Плохой репозиторий...
$query->where()->whereHas()->where()->limit()->where(function($q) {$q->where()->orWhere()})
Методы билдера можно чейнить (chain) как угодно.
Формироваться запрос будет только в момент вызова ->get() (метод ->get() иногда вызывается неявно).
Простой чат. Laravel. Redis. Socket.io вот в ютубе так называется видеоролик где рассказывают, большое желание понять как это использовать
Это веб-сокеты. Статей и мануалов очень много.
Если с сокетами не работал, а про HTTP знаешь только то, что адрес веб страницы начинается с этих букв - то вхождение будет сложное.